Estoy renderizando en un objeto OpenGL Offscreen Framebuffer y me gusta guardarlo como una imagen. Tenga en cuenta que el FBO es más grande que el tamaño de visualización. Puedo renderizar en el buffer fuera de pantalla y usarlo como textura, que funciona. Puedo "desplazar" esta textura más grande a través de la pantalla usando un desplazamiento, lo que me da confianza, que renderizo en un contexto más grande que la ventana.problema al guardar OpenGL FBO mayor que la ventana
Si guardo el búfer fuera de pantalla en un archivo de imagen siempre se recorta. El fragmento de código para el ahorro es:
void ofFBOTexture::saveImage(string fileName) {
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
// get the raw buffer from ofImage
unsigned char* pixels = imageSaver.getPixels();
glReadPixels(0, 0, 1024, 1024, GL_RGB, GL_UNSIGNED_BYTE, pixels);
imageSaver.saveImage(fileName);
}
Tenga en cuenta, que el contenido de la imagen se recorta, la parte visible se guarda correctamente (lo que significa que no hay error en formatos de píxeles, problemas GL_RGB etc.), pero el resto del espacio es lleno de un color
Entonces, mi pregunta es: ¿qué estoy haciendo mal?
Tengo el mismo problema que tú. ¿Podrías ampliar cómo obtienes la variable fbo? No puedo encontrar qué incluir para acceder a glGenFrameBuffers, que es lo que creo que se usa. –
1. aquí hay una buena descripción: http://www.songho.ca/opengl/gl_fbo.html – razong
2. GLuint fbo; glGenFramebuffersEXT (1, &fbo); // 1 == número de FBO para crear glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, OBF); – razong