GL_TEXTURE_2D 对 "non power of 2 textures" 的表现如何?

What is the performance of GL_TEXTURE_2D for "non power of 2 textures"?

理论上,OpenGL 有 GL_TEXTURE_2D 用于 "power of 2" 纹理和 GL_TEXTURE_RECTANGLE 用于 "non power of 2 textures"。

我想知道现代 GPU 是否仍然关心这种差异,或者这是否只是过去的问题。换句话说,如果我使用 GL_TEXTURE_2D 而不是 GL_TEXTURE_RECTANGLE 作为 "a non power of 2" 纹理,现代视频卡会不会有性能损失?

https://www.opengl.org/wiki/NPOT_Texture

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

至于与 GL_TEXTURE_RECTANGLE 相比的性能……未指定,但如果硬件支持(并且必须支持),我不明白为什么一个会比另一个慢。

以及与使用二次方纹理相比的性能。我预计会有一些开销(时间和内存大小),只是因为 hw 自然会处理二进制数并且必须小心处理。多少 ?好吧,如果不进行测试就无法判断……但是鉴于现代 GPU 的强大功能,如果您 _have_to_ 使用 NPOT,我不会太担心它。但是,如果转换为使用 NPOT 在您的应用程序中是微不足道的,并且作为 'init' 步骤很容易完成,那么我会这样做,只是为了确定。