簡體   English   中英

將數據從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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM