iphone - 如何合并两个FBO?

标签 iphone objective-c opengl-es

好的,所以我有 4 个缓冲区、3 个 FBO 和一个渲染缓冲区。让我解释一下。

我有一个 View FBO,它会在我将场景渲染到渲染缓冲区之前存储它。

我有一个背景缓冲区,其中包含场景的背景。

我有一个用户缓冲区,由用户操作。

当用户执行某些操作时,我会使用一些混合绘制到用户缓冲区。

然后重绘整个场景我想做的是清除 View 缓冲区,将背景缓冲区绘制到 View 缓冲区,更改混合,然后将用户缓冲区绘制到 View 缓冲区。最后将 View 缓冲区渲染到渲染缓冲区。

但是我不知道如何将一个 FBO 绘制到另一个 FBO。我想做的基本上是合并和混合两个 FBO,但我不知道该怎么做!我是 OpenGL ES 的新手,非常感谢您的帮助。

最佳答案

设置您的屏幕外帧缓冲区以直接渲染到纹理。此链接向您展示了如何:

http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/WorkingwithEAGLContexts/WorkingwithEAGLContexts.html#//apple_ref/doc/uid/TP40008793-CH103-SW7

为了我和你的利益,让我花点时间来描述帧缓冲区和渲染缓冲区。帧缓冲区就像一个接受 OpenGL 渲染命令的端口。在您可以看到或使用渲染输出之前,它必须附加到纹理或渲染缓冲区。您可以选择使用 glFramebufferTexture2DOES 附加纹理或使用 glFramebufferRenderbufferOES 附加渲染缓冲区。渲染缓冲区就像一个保存渲染结果的光栅图像。光栅图像的存储由 OpenGL 管理。如果您希望图像出现在屏幕上而不是屏幕外缓冲区,您可以使用 -[EAGLContext renderBufferStorage:fromDrawable:] 将 EAGLContext 的存储与渲染缓冲区一起使用。此代码位于 OpenGL ES 项目模板中。

您可能不需要 View 帧缓冲区,因为在将场景背景和用户层渲染为纹理后,您可以将这些纹理绘制到渲染缓冲区中(即,绘制到与屏幕渲染缓冲区关联的帧缓冲区中)。

关于iphone - 如何合并两个FBO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519567/

相关文章:

iphone - 了解 iOS 应用程序中使用的 MVC 模式

ios - 设置 UILongPressGesture 的最大持续时间?

iphone - 如何解决objective-c中的命名空间冲突?

iphone - iOS 5.0 模态视图不旋转( Storyboard)

android - 使用其他方法创建等效的 GL_MAX 混合方程

android - 来自 glSurfaceView 的位图为空

android - Opengl 创建 FBO- 致命信号 11 错误

iPhone MKMapView 商业应用?

iphone - Objective C/Iphone开发中Perform Selector有什么用

iphone - 使用核心数据更新实体发送消息到解除分配的实例