opengl - 优化 GLSL 中的 2D 模型 View 转换

标签 opengl glsl shader vertex-shader

因此,在 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/

相关文章:

python - 绘制大量正方形的最快方法?

c++ - 在桌面应用程序中使用 OpenGL 进行 GUI 设计有什么缺点?

opengl - OpenGL 3 中的图像加载存储等效项

c++ - GLSL 着色器中的链接器错误?

opengl - 在 Intel 上编译 Verbose GLSL Shader

c++ - 结合 openssl 作为控制台和库的问题

c - 在窗口 OpenGL 中一起打印变量和多边形

macos - Mac OS 10.8 支持 GLSL 3.30?

Android OpenGL ES 2.0 多重纹理和相机

c# - 实例着色器的矩阵设置