【发布时间】:2012-07-22 03:34:00
【问题描述】:
我认为图像文件大小在 2.0 中不必是 2 的幂 但是当我尝试时,它只是显示黑屏。 但它适用于两个图像的力量。 谁能给我一些提示我缺少什么或者我应该怎么做才能使用 NPOT 图像? 谢谢
【问题讨论】:
标签: iphone opengl-es-2.0 textures texture-mapping
我认为图像文件大小在 2.0 中不必是 2 的幂 但是当我尝试时,它只是显示黑屏。 但它适用于两个图像的力量。 谁能给我一些提示我缺少什么或者我应该怎么做才能使用 NPOT 图像? 谢谢
【问题讨论】:
标签: iphone opengl-es-2.0 textures texture-mapping
不幸的是,用于 iOS 的 OpenGL ES 需要二次幂图像,因为它是一个相当严格的实现(例如,查看 OpenGL ES 中不可用的所有内容)。
如果您的图像不是二次方,则有几种解决方案。
首先,最明显的一点是,您必须在图像中添加一些内边距才能做到这一点。这可以在图像编辑器中完成,也可以在加载纹理数据时以编程方式完成。
其次,如果您有多个纹理,则可以使用纹理打包工具将图像编译成更大的图像。这是一种更有针对性的方法,具体取决于您的预期用途,如果您打算将纹理用于多个 3D 网格或模型,则需要做更多的工作,因为您的 UV/纹理坐标将与其原始坐标不同。
编辑
由于不是每个人都阅读 cmets,我将引用我的评论以提高其知名度。在非常特殊的情况下,NPOT 纹理是有效的,如下所示。
经过一番挖掘,NPOT 纹理在技术上已在运行 2.0 ES 的较新 iOS 硬件中启用,但用途极为有限。具体来说,您必须使用具有钳位到边缘的线性过滤,并且没有 mipmapping。这限制了您的使用,并且在大多数情况下,二次方图像仍然会更高效/具有更高的帧速率。
【讨论】: