gpt4 book ai didi

c++ - 将数据从 std::vector 传递到 glsl 中的统一数组

转载 作者:行者123 更新时间:2023-11-30 05:43:56 25 4
gpt4 key购买 nike

我在这样的着色器中有一个制服:

uniform vec3 origins[10];

和我的代码中的 std::vector 是这样的:

std::vector<glm::vec3> origins;

其中包含十个 glm::vec3 元素。

有谁知道如何将它传递给着色器?我想:

GLint originsLoc = glGetUniformLocation(programID, "origins");
glUniform3fv(originsLoc, 10, origins.data());

会做,但不会编译。该错误表明 没有匹配函数来调用“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);
}

关于c++ - 将数据从 std::vector 传递到 glsl 中的统一数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30039090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com