5

我目前正在编写一个在 sdl 下使用 2D OpenGL 输出的游戏,并且我正在尝试使用 SDL_ttf 加载文本。但是我必须用空白像素填充文本,因为普通的 OpenGL 似乎不支持两个纹理的非幂。我听说有一个名为 OpenGL 的扩展GL_ARB_texture_non_power_of_two可以启用两个纹理的非幂。截至今天,有多少卡与此扩展不兼容,我如何加载它?

4

2 回答 2

10

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

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

至于 mrazza 关于仅使用 POT 的评论,NPOT 纹理没有什么好怕的(只要您的硬件可以支持它)。这不应该是你的首选,因为它们可能会带来轻微的性能损失,但对于填充或重新缩放不合适的明显情况(渲染目标等),使用它们没有什么好担心的.

于 2011-06-15T08:25:25.030 回答
2

一般来说,这些问题都在opengl 规范中得到了解答。

但是,NPOT 纹理很久以前就集成在 OpenGL 中,以至于您需要查看旧版本才能找到对此的参考。例如,在3.0 规范中,您将在 L.3 附录中看到 NPOT 扩展从 GL 2.0 开始集成到 GL 核心中。因此,任何支持 GL 2.0(自 2004 年底以来几乎所有 PC GPU)的实现都支持该功能。

至于如何“加载”它:无事可做。只需将非二次幂大小传递给 glTexImage。

于 2011-06-15T08:26:04.993 回答