Ich gehe davon aus, dass dies eines der Dinge sein wird, die "undefined" ist, aber ich kann nicht scheinen, eine konkrete Antwort von Google zu finden.OpenGL-Standardwert für ungepufferte Vertex-Attribut bei Verwendung von Layoutqualifikatoren
Lasst uns in meinem Vertex-Shader sagen, ich habe:
layout(location = 0) in vec3 vPosition;
layout(location = 1) in vec3 vNormal;
layout(location = 2) in vec4 vColour;
Aber es gibt nichts zu Lage gepuffert 2 mit glEnableVertexAttribArray() oder glVertexAttribPointer(). Kann ich erwarten, dass der Wert etwas Besonderes ist?
Ich nahm für eine vec4 an, dass es entlang der Linien {0,0,0,0}, {0,0,0,1} oder {1,1,1,1}, aber in mein Fall ist es {0,0,1,1}.
Als ich zuvor glBindAttribLocation() verwendet habe, um die Speicherorte anzugeben, wurde standardmäßig {1,1,1,1} auf vier verschiedenen Computern mit drei verschiedenen Betriebssystemen (ubuntu 12.04, Windows 7 und ubuntu 10.04) verwendet.
Ist es sicher anzunehmen, dass der Wert {0,0,1,1} auf allen Maschinen liegt? oder war das einfach Zufall?
Also habe ich glDisableVertexAttribArray() für die bestimmte Ortsnummer gesetzt, aber es wird immer noch im Shader als {0,0,1,1} gelesen. Ich benutze einen VAO, also mache ich den Anruf nur einmal. Sollte ich sie direkt deaktivieren bevor ich meinen glDrawElements() Aufruf statt? – kbirk
@Pondwater: Wenn der VAO es deaktiviert, ist es deaktiviert. Sie müssen es nicht erneut deaktivieren. Außerdem habe ich einen Nachtrag zu der Antwort gemacht. –
Ahh das macht Sinn! Danke für die Abklärung! – kbirk