如何在iPhone上实现全景抗锯齿

时间:2009-01-11 06:32:01

标签: iphone opengl graphics

我想在iPhone上的OpenGL ES应用程序上实现FSAA

目前,我通过将场景渲染为屏幕宽度和高度的两倍的纹理来实现此目的。然后我使用了很好的功能:

void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height);

将图像调整为屏幕分辨率。

有更好的方法吗?

更新奖金已添加我想知道,鉴于它现在是2010年1月,是否有更好的方法在v3.1 3GS手机上执行此操作等。

4 个答案:

答案 0 :(得分:8)

对于PSP上的Gran Turismo,开发人员通过每帧移动图像一个像素来实现类似于抗锯齿的效果(可以在此处进行演示:http://www.gtplanet.net/why-gran-turismo-psp-looks-so-good/),如果iPhone没有支持您正在寻找的选项。

答案 1 :(得分:8)

从iOS 4.0开始,通过Apple扩展程序直接支持全屏抗锯齿功能。基本概念类似于您已经在做的事情:将场景渲染到更大的帧缓冲区,然后将其复制到屏幕大小的帧缓冲区,然后将该缓冲区复制到屏幕上。不同之处在于,复制/采样操作不是创建纹理并将其渲染到四边形上,而是通过单个函数调用(具体地,glResolveMultisampleFramebufferAPPLE())执行。

有关如何设置缓冲区和修改绘图代码的详细信息,可以阅读为OpenGL ES 1.1编写的a tutorial on the Gando Games blog;还有a note on Apple's Developer Forums解释同样的事情。

感谢Bersaelor pointing this out in another SO question

答案 2 :(得分:3)

技术上iPhone的GPU(PowerVR MBX Lite)应该支持抗锯齿。但是,目前Apple的OpenGL ES驱动程序(截至2009年1月)似乎没有公开此功能。因此,像你一样做“手动AA”几乎是唯一的方法。

答案 3 :(得分:2)

http://iphonedevelopment.blogspot.com/2009/06/opengl-es-2-shaders.html?showComment=1245770504079#c6001476340022842908

iPhone OS 3.0 + OpenGL ES 2.0. Is anyone seeing better anti-aliasing?

听起来你不能在硬件中做到这一点,因为你没有渲染到帧缓冲区,只有iPhone为你复合的纹理。