在搜索並閱讀關於Modern OpenGL以升級現有項目之後,我有點困惑,因爲我的基於OpenGL 2.1的3D框架。現代OpenGL:VBO,GLM和矩陣堆棧
所以,據我瞭解...
我們需要生成頂點,索引,法線,顏色的UV我們的頂點緩衝區對象等
然後我們可以使用GLM矩陣轉換的,而我們只用VBO來創建或操縱網格,最後我們通過萬事成GLSL頂點着色器這樣的...
glm::mat4 MVP = projection * view * model; glUniformMatrix4fv(glGetUniformLocation(shaderProgramID, "MVP"), 1, GL_FALSE, glm::value_ptr(MVP)); //or &MVP[0][0] // uniform mat4 MVP; // in vec3 Vertex; // void main(void) // { // gl_Position = MVP * vec4(Vertex, 1.0); //instead of ftransform(); // }
問題:我們如何在沒有pushMatrix/popMatrix的情況下進行分層轉換? (或者我們可以通過使用我們的VBO進行分層轉換,這有可能嗎?)
如果不可能,那麼如何通過使用GLM和C++實現與pushMatrix/popMatrix相同的結果?
可以說,我需要的是這樣的:
> Set identity
> Translate to X, Y, Z
> Draw Mesh 1
> Rotate 0.5 by X axis
> Draw Mesh 2
> Scale down to 0.1
> Draw Mesh 3
@BЈовић:[OpenGL Mathematics(GLM)](http://glm.g-truc.net/),一個僅用於矩陣/向量數學的C頭文件庫。 – genpfault