[英]Most efficient way to pass data to a std::valarray from a std::vector
[英]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.