从GLKView/GLKit获取默认帧缓冲区ID

xan*_*gtx 14 opengl-es ios opengl-es-2.0 ios5

我在我的IOS OpenGL ES 2.0项目中使用GLkit/GLKView来管理我的应用程序的默认FBO /生命周期.

在桌面OpenGL中为了绑定默认FBO(前缓冲区),我可以调用glBindFrameBuffer(GL_FRAMEBUFFER,0),但在IOS应用程序中并非如此,因为您必须自己创建默认FBO并且它将具有唯一ID;

问题是GLKit/GLKView编码风格迫使我使用GLKView的"bindDrawable"函数激活默认FBO,这使得我的跨平台渲染系统的设计有点难看(必须在我的c ++引擎类和桥中将GLKView指针存储为void*每次我想执行默认的FBO绑定时都抛出它)

有没有办法获得GLKit/GLKView创建的默认FBO ID,以便我可以存储并使用它来绑定我的代码中的任何位置的默认帧缓冲区?

在最坏的情况下,我可以恢复自己创建默认的FBO并消除GLKit/GLKView,但它是一个很好的框架,我想继续使用它.

抱歉我的英文不好,并提前感谢您的回复.

Chr*_*ahl 23

也许您可以在bindDrawable调用之后获取"当前"帧缓冲区ID,方法是:

GLint defaultFBO;
glGetIntegerv(GL_FRAMEBUFFER_BINDING_OES, &defaultFBO);
Run Code Online (Sandbox Code Playgroud)