Estoy tratando de crear un buffer de representación fuera de pantalla en OpenGL ES en el iPhone. He creado el búfer como este:Dibujar para renderbuffer fuera de pantalla en OpenGL ES (iPhone)
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 use el método EAGLContext renderBufferStorage: fromDrawable: pero parece que esto solo funciona para un buffer de renderizado (el principal se muestra). Si uso la función normal de OpenGL glRenderBufferStorageOES, parece que no puedo mostrarla. 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];
Al hacerlo de esta manera, no se muestra nada en la pantalla. Sin embargo, si cambio las referencias a "fuera de pantalla ... Buffer" a los buffers que se crearon con el método renderBufferStorage, funciona bien.
¿Alguna sugerencia?
Estoy escribiendo un juego en el que estoy dibujando cosas en la pantalla que deberían ser persistentes de fotograma a fotograma. Me gustaría dibujar estas cosas persistentes en un buffer fuera de pantalla, y luego en cada cuadro "blit" esto a la pantalla y dibujar las cosas no persistentes/volátiles encima de él. Realmente me gustaría evitar tener que mantener una lista de los objetos persistentes y volver a crearlos en cada cuadro, ya que la cantidad de objetos podría volverse difícil de manejar muy rápidamente. –
David, ¿resolviste esto? Estoy enfrentando el mismo problema. – vargonian