2

基本的な OpenGL シーンを作成していますが、オブジェクトの操作に問題があります。それぞれに異なる変換マトリックスがあり、シーン全体のモデルビュー/変換/スケーリング マトリックスもあります。

頂点シェーダーから計算を実行する前に、このデータをオブジェクトにバインドするにはどうすればよいですか? gl(Push|Pop)Matrix() について読んだことがありますが、これらの関数は私が理解していることから非推奨です。

私のコードのビット。頂点シェーダーからの位置:

gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;

オブジェクトを表示する C++ 関数:

// Clear etc...

mat4 lookAt = glm::lookAt();
glLoadMatrixf(&lookAt[0][0]);
mat4 combined = lookAt * (mat4) sceneTranslation * (mat4) sceneScale;
glLoadMatrixf(&combined[0][0]);

mat4 objectTransform(1.0);
// Transformations...

// No idea if it works, but objects are affected by camera position but not individually scaled, moved etc.
GLuint gl_ModelViewMatrix = glGetUniformLocation(shaderprogram, "gl_ModelViewMatrix");
glUniformMatrix4fv(gl_ModelViewMatrix, 1, GL_FALSE, &objectTransform[0][0]);

// For example
glutSolidCube(1.0);

glutSwapBuffers();
4

2 に答える 2