下面的代码两天都无法使用,在我弄弄了它之后,创建了新函数,重写了它们,删除了它们,现在,奇怪的是,它起作用了!恐怕有一个基本的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
的方式有关,但我看不到。现在,我担心我的代码中的某些内容会在一年后咬住我:|。