Я читал несколько (базовых) уроков о шейдерах.Пока что они рассмотрели, как устанавливать переменные в вашем шейдере.Но это было только о целых числах, числах или векторах.Я не могу найти ничего о том, как установить переменную mat4.Мой шейдер ожидает следующее:
uniform vec3 CameraPos;
uniform mat4 ModelWorld4x4;
Итак, положение камеры и мировая матрица модели.Я думаю, что у меня есть CameraPos правильно, но как я могу установить переменную ModelWorld4x4 ??
Вот как я устанавливаю vector3
campos = glGetUniformLocation(shader.id(), "CameraPos");
glUniform3f(campos, 0.0f, 0.0f, 3.0f);
Это(один из методов) как я пытался установить mat4
glGetFloatv(GL_MODELVIEW_MATRIX, modelworld);
modelw = glGetUniformLocation(shader.id(), "ModelWorld4x4");
glUniformMatrix4fv(g_modelworld4x4, modelworld); // Not working
Я использую библиотеку Assimp для загрузки модели, поэтому в настоящее время мировая матрица хранится в структуре aiMatrix4x4.
// world matrix of the model
aiMatrix4x4 m = nd->mTransformation;
// Save in a global variable
g_modelworld4x4 = m;