c++ - 使用成员函数为着色器设置矩阵统一时出现间歇性错误
问题描述
下面的代码在 2 天内没有工作,在我摆弄它之后,创建了新函数,重写了它们,删除了它们,现在,奇怪的是,它工作了!恐怕有一个基本的 c++ 错误,我的菜鸟大脑看不到它。
void Shader::SetMat4(const char* key, const glm::mat4 &value) {
uint loc = glGetUniformLocation(id, key); // id is the program id stored as member var
glUniformMatrix4fv(loc, 1, GL_FALSE, glm::value_ptr(value));
}
如果我直接在调用函数中设置制服而不是这样做shader->SetMat4
,那么它就可以工作,但这只是拒绝工作。
我怀疑这与我传递mat4
引用的方式和value_ptr
返回的方式有关const *mat4::value_type
,但我没有看到。现在我担心我的代码中有些东西会在一年后咬我:|。