使用成员函数为着色器设置矩阵统一时出现间歇性错误

时间:2018-10-06 00:59:57

标签: c++ opengl

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

0 个答案:

没有答案