GL_TEXTURE_2D对于“2个纹理的非幂”有什么表现?

时间:2016-05-26 22:07:13

标签: performance opengl textures gpu hardware

理论上,OpenGL的“2次幂”纹理为GL_TEXTURE_2D,“2次纹理的非幂次”为GL_TEXTURE_RECTANGLE。

我想知道现代GPU是否仍然关心这种差异,或者这只是过去的问题。换句话说,如果我使用GL_TEXTURE_2D而不是GL_TEXTURE_RECTANGLE来表示“非幂2”纹理,那么现代视频卡的性能会不会下降?

1 个答案:

答案 0 :(得分:5)

请参阅https://www.opengl.org/wiki/NPOT_Texture

任何至少是OpenGL 2.0核心兼容的硬件(最近的hw很可能是OpenGL 4.4兼容的)必须支持GL_TEXTURE_2D的非二次幂(NPOT)纹理。

至于与GL_TEXTURE_RECTANGLE相比的性能...没有指定,但是如果hw支持它(并且必须),我不明白为什么一个会比另一个慢。

与使用2次幂纹理相比,性能更佳。我希望有一些开销(包括时间和内存大小),只是因为hw自然会处理两个人的力量,并且必须要小心。多少 ?好吧,如果没有测试就无法判断...但是考虑到现代GPU的强大功能,如果您使用NPOT,我不会太担心它。但是如果转换为使用NPOT在您的应用程序中是微不足道的并且很容易作为“初始化”步骤完成,那么我会这样做,只是为了确定。