私はシェイダーに関するいくつかの(基本的な)チュートリアルを読んできました。これまでは、シェーダーで変数を設定する方法について説明しました。しかし、これはints、浮動小数点またはベクトルについてのみでした。私はmat4変数を設定する方法について何も見つけることができません。私のシェーダは、次のことを期待しています。OpenGLでのmat4の設定
uniform vec3 CameraPos;
uniform mat4 ModelWorld4x4;
モデルのカメラ位置とワールドマトリックス。私はCameraPosの権利を持っていると思いますが、どうやってModelWorld4x4変数を設定しますか?
この
は私が私が使用しているMAT4glGetFloatv(GL_MODELVIEW_MATRIX, modelworld);
modelw = glGetUniformLocation(shader.id(), "ModelWorld4x4");
glUniformMatrix4fv(g_modelworld4x4, modelworld); // Not working
を設定しようとしたかのVector3
campos = glGetUniformLocation(shader.id(), "CameraPos");
glUniform3f(campos, 0.0f, 0.0f, 3.0f);
これは、(のいずれかの方法)を設定する方法でありますAssimpライブラリはモデルを読み込むため、現在の世界の行列はaiMatrix4x4構造体に格納されています。
// world matrix of the model
aiMatrix4x4 m = nd->mTransformation;
// Save in a global variable
g_modelworld4x4 = m;