今天OpenGL中NPOT纹理的状态

时间:2011-06-15 07:57:58

标签: opengl sdl sdl-ttf

我目前正在编写一个在sdl下使用2D OpenGL输出的游戏,我正在尝试使用SDL_ttf加载文本。但是我必须用空白像素填充文本,因为看起来普通的OpenGL不支持两个纹理的非幂。我听说有一个名为GL_ARB_texture_non_power_of_two的OpenGL扩展,可以实现两个纹理的无功能。到目前为止有多少张卡与此扩展程序不兼容,如何加载它?

2 个答案:

答案 0 :(得分:10)

任何OpenGL 2.0或更高版本都支持非二次幂纹理。这意味着几乎在2005年左右制作的任何卡片。这包括GeForce FX和6xxx及以上。它还包括Radeon 9500及以上版本(虽然在Radeon HD系列之前,Radeon不允许NPOT拥有mipmap)。

顺便说一句,我希望你不要试图将每个角色放入一个单独的纹理中。因为从表现的角度来看,这将是可怕的。将您想要使用的所有字符放在单个纹理中,然后选择您需要的字符。你甚至不需要NPOT。

至于mrazza关于仅仅使用POT的评论,没有什么可以担心NPOT纹理(只要你的硬件可以支持它)。它不应该是你作为第一手段,因为它们可能会有次要的性能损失,但是对于明显的情况,填充或重新缩放是不合适的(渲染目标等),使用它们没有什么可担心的。

答案 1 :(得分:2)

一般来说,这些问题会在opengl specification中解答。

然而,很久以前NPOT纹理已经集成到OpenGL中,你需要查看旧版本甚至找到对它的引用。在3.0 spec,例如您将在L.3附录中看到NPOT扩展已从GL 2.0开始集成到GL核心中。因此,任何支持GL 2.0的实现(自2004年底以来几乎都是所有PC GPU)都支持该功能。

关于如何“加载”它:没有什么可做的。只需将非二次幂的大小传递给glTexImage。

相关问题