Fragment-shaders: output-Variablen
Lesen der GLSL 1.40 Spezifikation:
Fragment Ausgänge können nur schweben,
Gleitkomma-Vektoren, signiert oder
unsigned Integer oder integer-Vektoren,
oder arrays solcher. Matrizen und
Strukturen können nicht ausgegeben werden. Fragment
Ausgänge deklariert werden, wie in der
folgende Beispiele:out vec4 FragmentColor;
out uint Leuchtkraft;
Die fragment-Farbe definiert ist, schreiben gl_FragColor... ist es richtig? Jemand könnte klar meine Ideen über diese Ausgänge? Kann ich nur schreiben 'FragmentColor' in dem Beispiel, um zu bestimmen, fragment Farbe? Kann ich wieder Lesen Sie ('Leuchtkraft' zum Beispiel)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein Beispiel hat 2 Ausgänge. Sie haben entsprechende FBO-slots verbunden nach GLSL Programm verknüpfen. Sie können umleiten Sie mit
glBindFragDataLocation
.Sobald Sie aktiviert das shader-und FBO gebunden, es hängt alles davon ab, ein ziehen der Maske, legen Sie durch
glDrawBuffers
. Zum Beispiel, wenn Sie übergebenGL_COLOR_ATTACHMENT0
undGL_COLOR_ATTACHMENT2
es, das würde bedeuten, dass die Ausgabe mit dem index 0 gehen wird, um die Anlage 0 und output-index von 1 würde gehen, um die Farbe der Anlage 2.Den globalen output-variable gl_FragColor ist veraltet nach GLSL version 120.
Jetzt müssen Sie ihm einen Namen geben und geben von sich selbst, wie in Ihrem Beispiel.
Über mehrere Ausgänge,
dieser link gibt Ihnen Informationen über die Zuordnung: http://www.opengl.org/wiki/GLSL_Objects#Program_linking
(Und ich fand, dass link an: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Anzahl=270999 )
Hoffe, das hilft! 😀
Ooops! Ich sehe, dass kvark gab die entsprechenden Daten ein. Trotzdem, vielleicht hast du etwas aus meinem text zu.
möchte ich einige Beispiele nennen: