Ich rendere in ein OpenGL Offscreen Framebuffer Objekt und möchte es als Bild speichern. Beachten Sie, dass die FBO größer ist als die Anzeigegröße. Ich kann in den Offscreen-Puffer rendern und ihn als Textur verwenden, was funktioniert. Ich kann "scrollen" diese größere Textur durch die Anzeige mit einem Offset, die mich zuversichtlich, dass ich in einem größeren Kontext als das Fenster zu rendern macht.
Wenn ich den Offscreen-Puffer in einer Bilddatei speichere, wird er immer abgeschnitten. Das Codefragment zum Speichern lautet:
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);
}
Bitte beachten Sie, dass der Bildinhalt beschnitten wird, der sichtbare Teil korrekt gespeichert wird (d.h. keine Fehler in den Pixelformaten, GL_RGB-Probleme usw.), aber der restliche Raum mit einer Farbe gefüllt wird.
Meine Frage ist also: Was mache ich falsch?