Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iPhone上实现全场景抗锯齿_Iphone_Opengl_Graphics - Fatal编程技术网

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

如何在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

我想在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 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功能的解释完全有道理,并帮助我理解了原因。谢谢你的发帖。