iphone opengl es 2.0非2的力量

时间:2012-07-23 20:51:20

标签: iphone opengl-es-2.0 textures texture-mapping

我认为图像文件大小不一定是2.0中的2的幂 但是当我尝试时,它只显示黑屏。 但它可以很好地利用两个图像的力量。 谁能给我一些暗示我缺少的东西,或者我应该怎么做才能使用NPOT图像? 谢谢

1 个答案:

答案 0 :(得分:2)

不幸的是,OpenGL ES for iOS需要Power-of-Two图像,因为它是一个相当严格的实现(例如,查看OpenGL ES中没有的所有内容)。

如果您的图像不是2的幂,那么有一些解决方案。

首先,最明显的是,你必须为图像添加一些填充以使其成为现实。这可以在图像编辑器中完成,也可以在加载纹理数据时以编程方式完成。

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

修改

由于不是每个人都阅读评论,我会引用我的评论以提高其可见度。在非常特殊的情况下,NPOT纹理是有效的,如下所示。

  

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