glTexSubImage2D表现奇怪

时间:2014-02-20 23:37:21

标签: performance opengl driver nvidia

我很想看到使用OpenGL配置纹理上传的效果,并注意到我认为奇怪的东西。我使用格式为glTexStorage2D的{​​{1}}创建4K纹理。然后,我使用GL_RGBA8的每一帧将静态图像缓冲区重新上传到纹理。基于帧速率,我得到大约5.19GB / s。接下来,我将纹理的格式更改为glTexSubImage2D并重新尝试实验。这次我得到2.81GB / s,显着下降。这看起来很奇怪,因为据我所知,上传sRGB数据和上传RGB数据不应该有任何不同,因为没有应该进行的转换(在采样期间应该在着色器中进行sRGB转换)。 / p>

一些其他信息。对于第一个测试,我在GL_SRGB8_ALPHA8的调用中使用GL_RGBAGL_UNSIGNED_INT_8_8_8_8_REV,因为这是驱动程序(通过glTexSubImage2D)告诉我的理想选择。对于第二次测试,我根据驱动程序建议使用glGetInternalformativ。一些测试证实这些是分别使用的最快格式。这是使用332.21驱动程序在Windows 7 x64上使用Nvidia GeForce GTX 760。

GL_UNSIGNED_INT_8_8_8_8

1 个答案:

答案 0 :(得分:0)

显然存在“原生像素格式”这样的事情。请查看this link from Nvidia,尤其是第32.1.3节。