因此,转换顶点然后传递给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个。我可以做得更好吗?
答案 0 :(得分:4)
我认为图形硬件在相同的时间内使用3x3和4x4矩阵进行转换。在转换顶点的过程中,您是否有成熟的瓶颈?通常减速出现在片段着色器,而不是顶点
答案 1 :(得分:1)
这取决于。如果每个顶点都有复杂的信息并且它是你的瓶颈,那么如果你减少每顶点数据,你会看到一些速度增加。
最好的方法是设置测试并以两种方式进行测量。