2017-01-04 3 views
3

Ich habe ein System, um verschiedene Objekte in verschiedene RGBA Texturen mit OpenGL in C++ zu rendern. Ich möchte diese Texturen übereinander legen, aber mein Problem ist, dass für jede Textur der glClearColor gerendert wird.OpenGL Render zu transparenter Textur

Wie wird OpenGL angewiesen, die ClearColor-Teile der Textur transparent zu machen (0.0f Alpha), damit ich noch Teile der Ebenen hinter anderen Ebenen sehen kann?

Antwort

2

Der vierte Parameter von glClearColor ermöglicht es Ihnen, einen Alpha-Wert anzugeben, der beim Löschen des Renderziels festgelegt wird. Sie können also 0 übergeben, um ihn transparent zu machen.

Ihr Render-Ziel muss offensichtlich einen Alpha-Kanal haben. Außerdem kann das Löschen des Alphakanals mit dem mithilfe von glClearColor angegebenen Wert mithilfe von glColorMask aktiviert oder deaktiviert werden.

+0

Danke! Kann nicht glauben, dass ich nicht einmal daran gedacht habe! Es funktioniert irgendwie, der Hintergrund der Texturen ist weg! Aber ich bekomme ein brutales, kornartiges Flackern, keine Ahnung, warum das so sein könnte? GlBlendFunc verwenden (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Danke noch einmal! – GDN9

+0

Das Flackern klingt wie eine Art Synchronisationsproblem. https://www.khronos.org/opengl/wiki/Synchronization – samgak