如何在iPhone上实现全场景抗锯齿
我想在iPhone上的OpenGL ES应用程序上实现 目前,我通过将场景渲染为两倍于屏幕宽度和高度的纹理来实现这一点。然后我使用nice函数:如何在iPhone上实现全场景抗锯齿,iphone,opengl,graphics,Iphone,Opengl,Graphics,我想在iPhone上的OpenGL ES应用程序上实现 目前,我通过将场景渲染为两倍于屏幕宽度和高度的纹理来实现这一点。然后我使用nice函数: void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height); 绘制调整为屏幕分辨率的图像 有更好的方法吗 更新Bounty添加了考虑到现在是2010年1月,我想知道是否有更好的方法在v3.1 3GS手机上实现这一点。从技术上讲,iPhone的GPU(PowerVR
void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height);
绘制调整为屏幕分辨率的图像
有更好的方法吗
更新Bounty添加了考虑到现在是2010年1月,我想知道是否有更好的方法在v3.1 3GS手机上实现这一点。从技术上讲,iPhone的GPU(PowerVR MBX Lite)应该支持抗锯齿。然而,目前苹果的OpenGL ES驱动程序(截至2009年1月)似乎没有公开这一功能。所以,像你一样做“手动AA”几乎是唯一的方法。
听起来你在硬件上做不到,因为你没有渲染到帧缓冲区,只有iPhone为你合成的纹理。对于PSP上的Gran Turismo,开发者通过每帧前后移动一个像素来实现类似于抗锯齿的效果(可以在这里找到演示:)因此,如果iPhone不支持您正在寻找的内容,这是一个选项。从iOS 4.0开始,通过OpenGL的Apple扩展直接支持全屏消除混叠。基本概念与您已经在做的类似:将场景渲染到更大的帧缓冲区,然后将其复制到屏幕大小的帧缓冲区,然后将缓冲区复制到屏幕上。不同之处在于,复制/采样操作不是创建纹理并将其渲染到四边形上,而是通过单个函数调用执行(具体而言,
glResolveMultisampleFramebufferAPPLE()
)
有关如何设置缓冲区和修改图形代码的详细信息,请阅读为OpenGL ES 1.1编写的;也有人在解释同样的事情
感谢Bersaelor的帮助。唯一的问题是你需要达到60 fps:-)我真的很喜欢这个博客链接。关于为什么驱动程序没有公开AA功能的解释完全有道理,并帮助我理解了原因。谢谢你的发帖。