2017-07-19 6 views
2

Ich habe gerade durch this answer und seine Kommentare und haben einige ähnliche Fragen gelesen:Kann ich einen vec3-Wert in vec4-Uniformen hochladen?

  • diese Regel auch auf einheitliche Variablen Gegenstandslos?
  • Kann ich glUniform3fv für vec4 uniform aufrufen und erwarten, dass die W-Komponente 1.0 usw. ist?
  • Wo erwähnt die OpenGL-Spezifikation zu diesem Thema?

Antwort

3

Nein, diese Regeln gelten nicht für Uniformen. Folglich dürfen Sie glUniform3fv nicht auf einer vec4 aufrufen.

Die Spec states in Section 7.6.1:

Für alle [...] einheitliche Typen mit Uniform ladbar * Befehle, die Befehl verwendet wird, muss die Größe und Art des einheitlichen entsprechen, wie im Shader erklärt und Es werden keine Typkonvertierungen durchgeführt.

4

Die Spezifikationen in (. 7.6 UNIFORMVARIABLES) sagen, dass die Uniform* in INVALID_OPERATION Fehler ergeben würde, wenn:

die Größe im Namen der nicht mit der Größe des einheitlichen verwendet Uniform* Befehl angezeigt im Shader erklärt,

oder

die Komponente Typ und Zählung in dem Namen des Befehls Uniform* angegeben verwendete nicht den Typen der im Shader erklärte einheitliche übereinstimmt, in dem ein boolesche einheitlichen Komponententyp betrachtet wird jede der Uniform*i{v}, Uniform*ui{v} oder Uniform*f{v} Befehle übereinstimmen.

und Prüfung glUniform3f für eine vec4 Uniform nennen in der Tat in einem INVALID_OPERATION Fehler führen wird.

Verwandte Themen