OpenGL ES 纹理的图像大小

标签 image opengl-es texture2d

我还不太了解 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/

相关文章:

Android OpenGL ES 2.0 纹理

python - 如何防止上传非图片

css - 如何将背景图像溢出屏幕

c# - 如何使用 mvvcross/monodroid 在位图中插入文本?

ios - GLKTextureLoader 如何从图像条加载立方体贴图?

java - Android OpenGL 点数组

c# - 在 XNA 中,是否有从位图对象创建 Texture2D 的快速替代方法?

javascript - 如何从 HTML5 Canvas 中删除已经绘制的图像(只是那个而不是其他图像)

c# - gles2 动态壁纸转换为 c# (xamarin) 符合错误“...mono.android.TypeManager cannot be applied to

iphone - 像这样加载openGL纹理是否正确?