OpenGL ES纹理的图像大小

时间:2011-04-23 17:45:21

标签: image opengl-es texture2d

我还不太了解OpenGL ES。我只学习绘制三角形等等。我还没有学习纹理。

我听说在某些设备中,宽度或高度的图像是2的幂,例如:2,4,8,16,32等是必要的。为什么?如果我的图像大小是53 x 76,我该怎么办?

我需要知道这一点,因为这使我无法从画布切换到OpenGL ES。 谢谢你:))

2 个答案:

答案 0 :(得分:3)

具有2 <2>幂的纹理简化了纹理硬件,并为许多优化提供了空间,使其更快。如果你有一个非2次幂纹理,你有两个选择:

1)用你想要的任何东西填充“额外”空间(我会选择一种像亮绿色的颜色,这样如果你在屏幕上看到那种颜色,你就知道你在texcoords上做错了什么),在你的例子中它将是64x128,并调整你的纹理坐标来补偿。即你的texcoords现在会从(0,0)变为(53.0 / 64.0,76.0 / 128.0)。

2)将纹理拉伸至最近的2次幂,在您的示例中再次使用64x128,然后按原样使用现有的texcoords。

答案 1 :(得分:1)

通常,它更简单,并且图形芯片需要更少的逻辑/芯片空间来处理宽度和高度为2的幂的图像。如果你开始使用mip-maps,这就变得更加重要。

某些OpenGL | ES图形芯片支持两种纹理的无功能,但这需要付出代价:不支持Mip-Maps,如果您开始旋转图像,可能会受到巨大的性能影响。