Tri*_*ram 1 c++ opengl 3d matrix glm-math
我有一个OpenGL应用程序,它使用着色器和顶点缓冲区对象,GLM用于矩阵和向量.因为每帧都有矩阵变换,所以我每帧都调用glUniformMatrix4fv().以下是我的代码片段:
ViewMatrix = glm::rotate(glm::mat4(1.0f), glm::radians(YRotation), glm::vec3(0.0f, 1.0f, 0.0f)) * ViewMatrix;
ViewMatrix = glm::rotate(glm::mat4(1.0f), glm::radians(XRotation), glm::vec3(1.0f, 0.0f, 0.0f)) * ViewMatrix;
ViewMatrix = glm::translate(glm::mat4(1.0f), Translate) * ViewMatrix;
...
glUniformMatrix4fv(ShaderProgram->GetUniformLocation("View"), 1, GL_FALSE, glm::value_ptr(ViewMatrix));
Run Code Online (Sandbox Code Playgroud)
如图所示,我调用GetUniformLocation()来获取我在着色器中声明为uniform的View矩阵的位置.它是一个CProgram类的成员函数,它只调用glGetUniformLocation().因为每帧都会调用它,所以我想知道在程序开始时只调用一次glGetUniformLocation()会更好,并重复使用从中返回的值.帧率实际上会有明显的差异吗?