GL_DRAW/READ_FRAMEBUFFER vs GL_FRAMEBUFFER?
Habe ich bemerkt, dass es nun die GL_DRAW/READ_FRAMEBUFFER Erweiterungen. Derzeit bin ich einfach mit GL_FRAMEBUFFER und glTextureBarrierNV. Ich habe allerdings nicht festgestellt, dass viel über die LESE - /SCHREIB-extensions und damit einige Fragen stellen.
Welche OpenGL-version wurden Sie eingeführt?
Welche Vorteile geben Sie über die Verwendung von einfach GL_FRAMEBUFFER für Lesen und schreiben?
Wo finde ich mehr Infos dazu?
- Meinst du die
GL_DRAW/READ_FRAMEBUFFER
verbindlich Punkte? - Ja, das ist richtig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pedantisch Hinweis:
GL_DRAW/READ_FRAMEBUFFER
wurden nicht eingeführt, eine Erweiterung; Sie sind in core OpenGL 3.0-Funktionalität. Ja, technisch ist diese Funktionalität ist auch ausgesetzt in ARB_framebuffer_objects, aber das ist ein core-Erweiterung und es ist immer noch core-GL 3.0.In jedem Fall, wenn Sie wollen, dass die Etymologie des
DRAW/READ
Unterscheidung, die Sie brauchen, um sich zu EXT_framebuffer_blit. Das ist, wo diese Zähler entstanden ist, und das ist warum diese Enumeratoren vorhanden. Statt nur die Angabe von zwei FBOs zu kopierende aus/um, Sie schufen die zwei context-binding Punkte für den Framebuffer. DieglBlitFramebuffer
Befehl blits von der aktuell gebundenenREAD_FRAMEBUFFER
auf die aktuell gebundeneDRAW_FRAMEBUFFER
.Wenn Sie nicht mit blit, dann sind Sie nicht wirklich müssen die
DRAW/READ
Unterscheidung. Das bedeutet nicht, Sie sollten es nicht verwenden, jedoch.glReadPixels
liest aus derREAD_FRAMEBUFFER
. Die Bindung anGL_FRAMEBUFFER
bindet an beide Punkte, so kann der code noch funktionieren. Aber es ist manchmal nützlich, um ein FBO-Bindung, die gelesen werden können, die nicht stören Zeichenoperationen.Falls du meinst das
GL_READ_FRAMEBUFFER
undGL_DRAW_FRAMEBUFFER
Konstanten, diese kommen von der EXT_framebuffer_blit Erweiterung, die später gemacht-core in OpenGL 3.0 und in eine spezielle ARB_framebuffer_object Erweiterung (zusammen mitEXT_framebuffer_multisample
und die originalEXT_framebuffer_object
natürlich) für die Versionen <3.Erlauben Sie binden separate FBOs für Lesen und zeichnen-Operationen. Dies ist besonders nützlich für die FBO zu FBO-copy-Vorgänge eingeführt
EXT_framebuffer_blit
(mit denen Sie das kopieren von Daten direkt von einem FBO zu einem anderen) und für die Auflösung des multisampled FBOs eingeführt (und nötig) durchEXT_framebuffer_multisample
, die tatsächlich baut ontop der bereits erwähnten blit-Erweiterung. Wenn die Bindung eines FBO zuGL_FRAMEBUFFER
Sie tatsächlich binden es an beidenGL_READ_FRAMEBUFFER
undGL_DRAW_FRAMEBUFFER
.Wie gesagt, alle diese FBO-extension gemacht wurden-core in OpenGL 3.0, aber möglicherweise auch frühere Versionen. Schauen hier für weitere Informationen.