В примере Qt Qt 3D Wireframe QML код вершинного шейдера выглядит следующим образом:
#version 330 core
in vec3 vertexPosition;
in vec3 vertexNormal;
out EyeSpaceVertex {
vec3 position;
vec3 normal;
} vs_out;
uniform mat4 modelView;
uniform mat3 modelViewNormal;
uniform mat4 mvp;
void main()
{
vs_out.normal = normalize( modelViewNormal * vertexNormal );
vs_out.position = vec3( modelView * vec4( vertexPosition, 1.0 ) );
gl_Position = mvp * vec4( vertexPosition, 1.0 );
}
Ни одна из приведенных выше переменных uniform
не инициализируется в исходном коде примера, поэтому они должны получать значения по умолчанию, как описано в документе для ShaderProgram , которая гласит:
Qt3D автоматически заполняет набор униформ по умолчанию, если они встречаются на этапе интроспекции шейдера.
Также приведен список «униформы по умолчанию».
Я попытался найти часть в исходном коде Qt, где этим униформам присвоены значения по умолчанию (которые, я думаю, являются единичными матрицами), но не смог как-то.
Есть идеи?