我想在我的OpenGL程序中渲染GUI组件。它们仍然只是简单的纹理(vbo)矩形。 我想以正确的方式完成以下事情。
我知道,之前您可以使用已弃用的函数glOrtho
做很多事情。但是,既然我想以现代的方式做到这一点,希望对性能更好,我不知道如何开始。
在网上搜索后,我得出的结论是我必须使用着色器。我对着色器不太熟悉。
另一个问题是:使用着色器执行此操作时性能是否会提高?
答案 0 :(得分:1)
使用现代OpenGL执行的操作与使用glOrtho设置正交投影矩阵基本相同:创建将坐标1:1映射到视口坐标并使用它转换坐标的转换(矩阵)。
例如,您可以创建vec2
制服viewport
并将其设置为视口宽度/高度。然后在顶点着色器中,您可以使用它将顶点像素坐标位置转换为范围[-1,1],就像这样
gl_Position = vec4(2*vpos.xy / viewport.xy - 1, 0, 1);