在将任何统一参数设置到着色器之前,我使用glGetUniformLocation来检索其位置,而不是在开始时存储int位置值并执行一次。像这样::
const int location = glGetUniformLocation(program, name.c_str());
glUniform4fv(location, 1, &v.x);
会对我的表现产生很大影响吗?
答案 0 :(得分:1)
恕我直言,这将取决于比较字符串的速度(字符串的散列)。虽然不重新编译着色器,但int位置不会更改(但是,它可能不会更改)。因此,一旦存储位置并且每帧都获得它是一个好习惯。