標籤:結果 span using computer gpo 過程 log 參數 blog
上節說過矩陣是可以結合的,而且相乘是按照和應用順序相反的順序進行的。我們之前初始化translationMatrix和rotationMatrix的時候,第一個參數都是使用的一個初始矩陣 glm::matrix4(),實際上我們可以對代碼稍作最佳化,讓初始化過程精簡一些。
對比一下最佳化之前和最佳化之後的代碼:
之前:
1 glm::mat4 projectionMatrix = glm::perspective(30.0f, ((float)width()) / height(), 0.1f, 10.0f);2 glm::mat4 translationMatrix = glm::translate(glm::mat4(), glm::vec3(0.0f, 0.0f,-3.0f));3 glm::mat4 rotationMatrix = glm::rotate(glm::mat4(), 54.0f, glm::vec3(1.0f, 0.0f, 0.0f));4 5 glm::mat4 fullTransformMatrix = projectionMatrix * translationMatrix * rotationMatrix;
之後:
1 glm::mat4 projectionMatrix = glm::perspective(30.0f, ((float)width()) / height(), 0.1f, 10.0f);2 glm::mat4 translationMatrix = glm::translate(projectionMatrix, glm::vec3(0.0f, 0.0f,-3.0f));3 glm::mat4 fullTransformMatrix = glm::rotate(translationMatrix, 54.0f, glm::vec3(1.0f, 0.0f, 0.0f));
我們在初始化tranlationMatrix和fullTransformMatrix時的第一個變數都使用的是上一個變換矩陣,這樣做的好處是最終減少了一個rotaitionMatrix的中間變數。
編譯運行結果和上節一樣。
3D Computer Grapihcs Using OpenGL - 13 最佳化矩陣