0

我认为图像文件大小在 2.0 中不必是 2 的幂,但是当我尝试时,它只是显示黑屏。但它适用于两个图像的力量。谁能给我一些提示我缺少什么或者我应该怎么做才能使用 NPOT 图像?谢谢

4

1 回答 1

2

不幸的是,适用于 iOS 的 OpenGL ES 需要二次幂图像,因为它是一个相当严格的实现(例如,查看 OpenGL ES 中不可用的所有内容)。

如果您的图像不是二次幂,则有一些解决方案。

首先,最明显的一点是,您必须在图像中添加一些内边距才能做到这一点。这可以在图像编辑器中完成,也可以在加载纹理数据时以编程方式完成。

其次,如果您有多个纹理,则可以使用纹理打包工具将图像编译成更大的图像。这是一种更有针对性的方法,具体取决于您的预期用途,如果您打算将纹理用于多个 3D 网格或模型,则需要做更多工作,因为您的 UV/纹理坐标将与其原始坐标不同。

编辑

由于不是每个人都阅读评论,因此我将引用我的评论以使其具有更高的知名度。在非常特殊的情况下,NPOT 纹理是有效的,如下所示。

经过一番挖掘,NPOT 纹理在运行 2.0 ES 的较新 iOS 硬件中在技术上启用,但使用极为有限。具体来说,您必须使用具有钳位到边缘的线性过滤,并且没有 mipmapping。这限制了您的使用,并且在大多数情况下,二次方图像仍然会更有效/具有更高的帧速率。

于 2012-07-23T20:52:34.270 回答