Problem mit FBOs in OpenGL
lima-city → Forum → Programmiersprachen → C/C++ und D
ausschnitt
buffer
code
fenster
folgendes problem
funktion
grund
hauptproblem
http
kopieren
krieg
problem
textur
url
verwenden
verzichten
zeichnen
-
Ich habe folgendes Problem:
Ich möchte in OpenGL mit Framebuffer Objects in ein Fenster (wie immer) Rendern und in eine Texture die ich dann in einem Shader verwenden möchte und das in einem Rendervorgang. Das Problem ist das ich es irgendwie immer nur schaffe entweder in das Fenster zu rendern oder in die Texture.
Das Hauptproblem liegt übrigens im Rendervorgang. Wie krieg ich das hin? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo krisi12345,
soweit ich weis, geht das nicht. Der Grund dafür ist, das OpenGL immer in den gerade gebundenen Framebuffer rendert und nicht ein mehrere gleichzeitig. Allerdings gibt es eine Funktion zum kopieren von Framebuffern: glBlitFramebuffer(). Damit kannst Du erst off-screen in den FBO rendern und danach in den Fenster-Framebuffer kopieren. Allerdings musst Du dazu auch erst wieder das Binding ändern:
Wenn Du nachträglich nichts mehr auf den Screen zeichnen willst, dann kannst Du evtl. auf GL_DEPTH_BUFFER_BIT verzichten.// FBO als Read-Buffer: glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo); // Screen als Draw-Buffer: glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); // Framebuffer kopieren glBlitFramebuffer( 0, 0, width-1, height-1, 0, 0, width-1, height-1, GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT, GL_NEAREST);
Edit:
Du kannst natürlich auch erst auf den Screen rendern und dann den Ausschnitt, der Dich interessiert, in die Textur kopieren.
Beitrag zuletzt geändert: 25.4.2011 21:27:32 von darkpandemic -
Vielen Dank!!!
Hat mir sehr geholfen! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage