首页 > 解决方案 > 使用成员函数为着色器设置矩阵统一时出现间歇性错误

问题描述

下面的代码在 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,但我没有看到。现在我担心我的代码中有些东西会在一年后咬我:|。

标签: c++opengl

解决方案


推荐阅读