基本的な 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();