Установка mat4 в OpenGL

Я читал несколько (базовых) руководств по шейдерам. Пока что они рассказали, как устанавливать переменные в вашем шейдере. Но речь шла только о int, float или векторах. Я не могу найти ничего о том, как установить переменную 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;
5
задан Anteru 26 January 2012 в 18:41
поделиться