因此,转换顶点然后传递给 GLSL 中的片段着色器的标准方法是这样的:
uniform mat4 u_modelview;
attribute vec4 a_position;
void main() {
gl_Position = u_modelview * a_position;
}
但是,我在 2D 中工作,因此 4x4 矩阵中有冗余。我这样做会更有效率吗?
uniform mat3 u_modelview;
attribute vec3 a_position;
void main() {
gl_Position = vec4(u_modelview * a_position, 1.0);
}
gl_Position 需要一个 4 分量向量,因此在输出时需要额外的操作。然而,矩阵乘法是针对 9 个元素而不是 16 个元素的。我能做得更好吗?
最佳答案
我认为图形硬件在相同的时间内使用 3x3 和 4x4 矩阵进行转换。您在转换顶点的过程中是否遇到了瓶颈?通常减速出现在片段着色器,而不是顶点
关于opengl - 在 GLSL 中为 2D 优化模型 View 转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5449611/