c++ - 如何将mat4数组作为制服传递
问题描述
我必须像这样将一个 mat4 数组作为制服传递给我的顶点着色器:
在顶点着色器中:
uniform mat4 u_jointMatrix[2];
在我的 C++ 程序中,我这样做了:
glm::mat4 jointM[2];
//I filled jointM with 32 values (16 x 2)
int jointMatrixLoc = glGetUniformLocation(programT, "u_jointMatrix");
glUniformMatrix4fv(jointMatrixLoc, 1, GL_FALSE, glm::value_ptr(jointM[2]));
我写这个是因为glUniformMatrix4fv(jointMatrixLoc, 1, GL_FALSE, glm::value_ptr(jointM));
不起作用。
我认为我所做的是不正确的。有人可以确认吗?
解决方案
jointM[2]
用 2 个元素寻址数组中的第 3 个元素。您必须指定指向第一个元素的指针:
glUniformMatrix4fv(jointMatrixLoc, 1, GL_FALSE, glm::value_ptr(jointM[2]));
glUniformMatrix4fv(jointMatrixLoc, 2, GL_FALSE, glm::value_ptr(jointM[0]));
推荐阅读
- django - 如何为我在谷歌云平台上运行的网站设置免费 SSL 证书。(视窗 10)
- html - 垂直填充但根据内容保持宽度
- holochain - Holochain:如何使用生产指挥查询实例?
- javascript - 如何在 p5.js 中使用 dist() 计算旋转?
- flutter - 耀斑和颤振问题
- amazon-web-services - AWS SAM - 如何将参数传递给 Lambda 函数
- android - 带有 WebView 的 Android 弹出登录屏幕
- c# - 使用 SQL 选择结果写入 C# DataTable 时出现转换失败错误
- r - 更改数据帧结构(两个数据帧为一个)
- python - 投资组合优化工具的问题 - IndexError