将数据从 std::vector 传递到 glsl 中的统一数组
Pass data from std::vector to uniform array in glsl
我在这样的着色器中有一个制服:
uniform vec3 origins[10];
和 std::vector 在我的代码中是这样的:
std::vector<glm::vec3> origins;
填充了十个 glm::vec3
元素。
有谁知道如何将其传递给着色器?我想:
GLint originsLoc = glGetUniformLocation(programID, "origins");
glUniform3fv(originsLoc, 10, origins.data());
会做,但不会编译。错误说有 no matching function for call to 'glUniform3fv'
。如何以满足 glUniform3fv
功能的方式传递 std::vector
中的数据?
您应该使用 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);
}
我在这样的着色器中有一个制服:
uniform vec3 origins[10];
和 std::vector 在我的代码中是这样的:
std::vector<glm::vec3> origins;
填充了十个 glm::vec3
元素。
有谁知道如何将其传递给着色器?我想:
GLint originsLoc = glGetUniformLocation(programID, "origins");
glUniform3fv(originsLoc, 10, origins.data());
会做,但不会编译。错误说有 no matching function for call to 'glUniform3fv'
。如何以满足 glUniform3fv
功能的方式传递 std::vector
中的数据?
您应该使用 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);
}