2

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

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

我需要知道这一点,因为这是阻止我从画布切换到 OpenGL ES 的原因。谢谢你 :)

4

2 回答 2

3

具有 2 次幂的纹理极大地简化了纹理硬件,并为许多优化腾出空间以使其更快。如果您有非 2 次幂纹理,则有两种选择:

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

2)将您的纹理拉伸到最接近的 2 次方,在您的示例中再次为 64x128,并按原样使用现有的 texcoords。

于 2011-04-23T18:04:27.100 回答
1

一般来说,图形芯片处理宽度和高度为 2 次方的图像更简单并且需要更少的逻辑/芯片空间。如果您开始使用 mip-map,这将变得更加重要。

一些 OpenGL|ES 图形芯片支持非两种纹理的幂,但这是有代价的:不支持 Mip-Maps,如果您开始旋转图像,您可能会受到巨大的性能影响。

于 2011-04-23T18:06:38.717 回答