Dibujar a fuera de pantalla renderbuffer en OpenGL ES (iPhone)
Estoy intentando crear un búfer de renderizado fuera de pantalla en OpenGL ES en el iPhone. He creado el búfer de esta manera:
glGenFramebuffersOES(1, &offscreenFramebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, offscreenFramebuffer);
glGenRenderbuffersOES(1, &offscreenRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, offscreenRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, offscreenRenderbuffer);
Pero estoy confundido sobre cómo renderizar el almacenamiento. La documentación de Apple dice que se debe usar el método EAGLContext renderBufferStorage: fromDrawable: pero parece que esto solo funciona para un búfer de render (el principal se muestra). Si utilizo la función normal de OpenGL glRenderBufferStorageOES, parece que no consigo que se muestre. Aquí está el código:
// this is in the initialization section:
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGB8_OES, backingWidth, backingHeight);
// and this is when I'm trying to draw to it and display it:
glBindFramebufferOES(GL_FRAMEBUFFER_OES, offscreenFramebuffer);
GLfloat vc[] = {
0.0f, 0.0f, 0.0f,
10.0f, 10.0f, 10.0f,
0.0f, 0.0f, 0.0f,
-10.0f, -10.0f, -10.0f,
};
glLoadIdentity();
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vc);
glDrawArrays(GL_LINES, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, offscreenRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
Haciéndolo de esta manera, nada se muestra en la pantalla. Sin embargo, si cambio las referencias a "offscreen ... Buffer" a los buffers que se crearon con el método renderBufferStorage, funciona bien.
¿Alguna sugerencia?