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