Registriert: Di Dez 16, 2014 10:18 Beiträge: 32
Programmiersprache: C++
Hallihallo,
wenn ich eine uniform-Variable in meinem Shader mithilfe von glUniformXX definiere, ist diese beim nächsten Aufruf von glUseporgram noch gespeichert oder muss sie neu definiert werden?
Code:
glUseprogram(XY);
glUniform1f(pos, 123);
glUseprogram(0);
...
glUseprogram(XY);
glUniform1f(pos, 123);// unnötig?
glDraw....();
glUseprogram(0);
Dankeschön
Zuletzt geändert von beecksche am Fr Jan 16, 2015 12:00, insgesamt 2-mal geändert.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Die Uniformvariable behält solange ihren Wert, bis du sie auf einen anderen setzt. Wie oft du dazwischen glUseProgram aufrufst, spielt keine Rolle.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
@end Dann würden die Treiber die Vorgaben von OpenGL nicht richtig erfüllen: They retain the values assigned to them by a call to glUniform until the next successful link operation occurs on the program object, when they are once again initialized to 0. Die Variablen werden nur einmal auf 0 initialisiert, nämlich beim Linken des Programms. Der Variablenwert wird erst wieder beim nächsten Aufruf von glUniform geändert.
_________________ Wenn Gauß heute lebte, wäre er ein Hacker. Peter Sarnak, Professor an der Princeton University
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.