我还不太了解 OpenGL ES。我只学会了画三角形等等。我还没有了解纹理。
我听说在某些设备中,宽度或高度为 2 的幂的图像是必要的,例如:2、4、8、16、32 等。为什么?如果我的图像尺寸为 53 x 76,我该怎么办?
我需要知道这一点,因为这就是我无法从 Canvas 切换到 OpenGL ES 的原因。 谢谢你:)
最佳答案
具有 2 次方的纹理极大地简化了纹理硬件,并为许多优化腾出了空间,以使其更快。如果您有非 2 的幂纹理,您有两个选择:
1)用你想要的任何东西填写“额外”空间(我会选择像亮绿色这样的颜色,这样如果你在屏幕上看到这种颜色,你就知道你的纹理坐标出了问题),在您的示例中,它将是 64x128,并调整纹理坐标进行补偿。 IE。您的纹理坐标现在将从 (0, 0) 变为 (53.0/64.0, 76.0/128.0)。
2) 将纹理拉伸(stretch)到最接近的 2 次方,在示例中再次拉伸(stretch)为 64x128,然后按原样使用现有的纹理坐标。
关于OpenGL ES 纹理的图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765835/