小编Tri*_*ram的帖子

每帧调用glGetUniformLocation()

我有一个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()会更好,并重复使用从中返回的值.帧率实际上会有明显的差异吗?

c++ opengl 3d matrix glm-math

1
推荐指数
1
解决办法
689
查看次数

标签 统计

3d ×1

c++ ×1

glm-math ×1

matrix ×1

opengl ×1