DGL https://delphigl.com/forum/ |
|
Shader Variablen Nummer vorgeben. https://delphigl.com/forum/viewtopic.php?f=20&t=11238 |
Seite 1 von 1 |
Autor: | mathias [ Mi Sep 24, 2014 22:08 ] |
Betreff des Beitrags: | Shader Variablen Nummer vorgeben. |
Mit glGetUniformLocation kann man auslesen, welche Nummer die Uniform Variable hat. Mit welchen Befehl kann man diese Nummer vorgeben. Das Z.B. die WorldMatrix die Nummer 2 bekommt. Im Shader selbst kann man es so machen, aber irgendwie geht es auch extern. Code:
|
Autor: | Vinz [ Mi Sep 24, 2014 23:23 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
http://wiki.delphigl.com/index.php/glUniform Bsp.: glUniform1f(location, value); übergibt eine float mit dem Wert value an die location (integer). Mit layout(...) kannst Du diesen Wert dann abrufen und kannst glGetUniformLocation umgehen. Aber wozu, wenn ich fragen darf? |
Autor: | yunharla [ Do Sep 25, 2014 12:34 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
Vinz hat geschrieben: http://wiki.delphigl.com/index.php/glUniform Bsp.: glUniform1f(location, value); übergibt eine float mit dem Wert value an die location (integer). Mit layout(...) kannst Du diesen Wert dann abrufen und kannst glGetUniformLocation umgehen. Aber wozu, wenn ich fragen darf? Oha, das war jetzt aber mal sowas von falsch mein lieber. -glGetUniformLocation gibt dir die Addresse der Variable -glUniformXXX setzt den Wert an einer bestimmten Addresse -layout ist ein qualifier und setzt du den Index und/oder die Komponente des Vertex Attribut (normalerweise glBindAttribLocation) bzw. des Fragment-Output (glBindFragDataLocationIndexed) |
Autor: | Vinz [ Do Sep 25, 2014 12:48 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
yunharla hat geschrieben: Vinz hat geschrieben: http://wiki.delphigl.com/index.php/glUniform Bsp.: glUniform1f(location, value); übergibt eine float mit dem Wert value an die location (integer). Mit layout(...) kannst Du diesen Wert dann abrufen und kannst glGetUniformLocation umgehen. Aber wozu, wenn ich fragen darf? Oha, das war jetzt aber mal sowas von falsch mein lieber. -glGetUniformLocation gibt dir die Addresse der Variable -glUniformXXX setzt den Wert an einer bestimmten Addresse -layout ist ein qualifier und setzt die Addresse der Variable von aussen kannst du soweit ich weiss nur das layout der Vertex Attribute (glBindAttribLocation) und Fragment-Farben setzen (glBindFragDataLocationIndexed) Hä, hab ich nicht das selbe geschrieben? Mit location mein ich ja Adresse. Ach, Du meinst: "Mit layout(...) kannst Du diesen Wert dann abrufen", oder? Ja, da habe ich mich wohl ungenau/falsch ausgedrückt. Genau genommen meinte ich da, dass man hiermit die location für eine Variable festlegen kann, und diese daher dann den Wert bekommt, der mit glUniform an diese Adresse geschickt wurde, man sich also glGetUniformLocation sparen kann. Ist das falsch? |
Autor: | yunharla [ Do Sep 25, 2014 12:50 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
Vinz hat geschrieben: yunharla hat geschrieben: Vinz hat geschrieben: http://wiki.delphigl.com/index.php/glUniform Bsp.: glUniform1f(location, value); übergibt eine float mit dem Wert value an die location (integer). Mit layout(...) kannst Du diesen Wert dann abrufen und kannst glGetUniformLocation umgehen. Aber wozu, wenn ich fragen darf? Oha, das war jetzt aber mal sowas von falsch mein lieber. -glGetUniformLocation gibt dir die Addresse der Variable -glUniformXXX setzt den Wert an einer bestimmten Addresse -layout ist ein qualifier und setzt die Addresse der Variable von aussen kannst du soweit ich weiss nur das layout der Vertex Attribute (glBindAttribLocation) und Fragment-Farben setzen (glBindFragDataLocationIndexed) Hä, hab ich nicht das selbe geschrieben? Mit location mein ich ja Adresse. Ach, Du meinst: "Mit layout(...) kannst Du diesen Wert dann abrufen", oder? Ja, da habe ich mich wohl ungenau/falsch ausgedrückt. Genau genommen meinte ich da, dass man hiermit die location für eine Variable festlegen kann, und diese daher dann den Wert bekommt, der mit glUniform an diese Adresse geschickt wurde, man sich also glGetUniformLocation sparen kann. Ist das falsch? Siehe mein Update... es sind keine Uniforms in diesen Sinne. |
Autor: | Vinz [ Do Sep 25, 2014 12:51 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
http://www.opengl.org/wiki/Layout_Quali ... m_location |
Autor: | yunharla [ Do Sep 25, 2014 13:09 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
I see, da kann layout wohl doch mehr. Allerdings kannst du mal abgesehen von einigen Spezialfallen den selben Effekt nicht von Aussen erreichen. Interessant waere es aber damit einen Precompiler zu machen der dann sowas wie die alten Built-In Attribute definiert. Erst dann koennte man sich wirklich glGetUniformLocation und das ganze Binding gemuddel sparen. |
Autor: | mathias [ Do Sep 25, 2014 21:39 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
Was muss ich tun, das Matrix_id eine 3 bekommt ? Code:
|
Autor: | glAwesome [ Do Sep 25, 2014 21:51 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
Im Shader: Code:
Das geht allerdings erst mit OpenGL 4.3 und entsprechender GLSL-Version (siehe Link von Vinz). |
Autor: | mathias [ Do Sep 25, 2014 21:55 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
glAwesome hat geschrieben: Im Shader: Code:
Das geht allerdings erst mit OpenGL 4.3 und entsprechender GLSL-Version (siehe Link von Vinz). Darum ging dies bei Matrix nicht, bei der Atributten ging es. Ich dachte, ich hätte mal ein Beispiele gesehen, bei dem vom C-Code aus, die Werte gesetzt wurden. |
Autor: | mathias [ Di Sep 30, 2014 15:39 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
Zitat: Ich dachte, ich hätte mal ein Beispiele gesehen, bei dem vom C-Code aus, die Werte gesetzt wurden. Ich habe es wieder gefunden. Code:
Aber leider wie ihr oben beschrieben habt, nur mit den Attributen. Link Ich habe noch eine Frage: Matrix ist eine Uniform-Variable. Heissen die andern Attrib-Vatriablen ? Wie heisst der Oberbergriff von beiden zusammen ? |
Autor: | glAwesome [ Di Sep 30, 2014 17:28 ] |
Betreff des Beitrags: | Re: Shader Variablen Nummer vorgeben. |
Attribute sind einfach die mit in (früher: attribute) deklarierten Variablen im Vertexshader. Uniformvariablen sind globale Variablen, die sich von CPU-Seite aus ändern lassen. Ein anderer Oberbegriff als "GLSL-Variable" fällt mir dazu nicht ein. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |