如何使大矩阵乘法

时间:2013-03-27 01:07:29

标签: glsl

我正在尝试制作一个GLSL着色器,它将90x10矩阵与10x1矩阵相乘。 90x1结果对应于30个顶点的xyz值。第一个大矩阵仅在启动时加载。另一方面,另一个矩阵可以在每次渲染时改变。

怎么可以这样做?我猜第一个矩阵可以存储为纹理,但我不知道如何处理第二个矩阵。

1 个答案:

答案 0 :(得分:1)

将第二个矩阵作为一个统一的浮点数组传递。

uniform float vec10[10];

并按元素执行乘法元素。

请注意,如果速度过慢,您可以尝试打包大型纹理,以便使用单个texelfetch读取4个元素。

如果要查看绑定统一数组的语法,请参阅http://www.opengl.org/wiki/Uniform_(GLSL)

请注意,将第二个矩阵存储在纹理中也是完全合法的;我只是不确定这样做对性能的影响,而不是作为制服发送。但要先让它工作,稍后进行剖析和优化。