我在这样的着色器中有一件制服:
a A 1
2
3
和我的代码中的std :: vector如下:
uniform vec3 origins[10];
填充了十个std::vector<glm::vec3> origins;
元素。
有谁知道如何将其传递给着色器?我想:
glm::vec3
会这样做,但它不会编译。该错误表明有GLint originsLoc = glGetUniformLocation(programID, "origins");
glUniform3fv(originsLoc, 10, origins.data());
。如何以满足no matching function for call to 'glUniform3fv'
功能的方式传递std::vector
中的数据?
答案 0 :(得分:1)
你应该使用GLfloat并注意glm :: vec3。 但这是一种方式:
for (int i = 0; i != 10; i++) {
GLint originsLoc = glGetUniformLocation(programID, "origins[i]");
glUniform3f(originsLoc, origins[i].x, origins[i].y, origins[i].z);
}