我正在 OpenGL 中创建一个应用程序,我在其中使用 glOrtho()
,原点位于左上角:
glOrtho(0.0, width, height, 0.0, 0.0, 1.0);
直到我尝试渲染轮廓字体时,我才发现它是错误的,它看起来是颠倒的。在搜索有关它的信息后,我偶然发现了一个网站,在该网站上我读到我的起点应该从左下角开始。
我知道 OpenGL 使用左下角原点,但我发现使用左上角原点对我来说更容易。我只需要水平翻转所有纹理,一切正常。但是,是的,问题出现在那些上下颠倒的轮廓字体上。
现在要更改原点,我必须更改一堆代码,所以如果没有必要,我真的很想避免这种情况。
所以我的问题是: 我使用左上角原点的方法是不是非常错误?如果没有,有没有办法让这些轮廓字体正确显示?
最佳答案
您正在某处渲染该字体,对吗? 您如何渲染它,当时是什么阻止您应用垂直镜像变换矩阵?
即如果您使用的是老式的、过时的方法:
glScalef( 1, -1, 1 );
glCallList(font); // Or whatever you are doing to render the outline font
或者,如果您正在使用着色器,让您的顶点着色器执行如下操作:
Vec4 position = aPosition;
position.y = -1 * position.y;
gl_Position = aMVPMatrix * position
当然,这都是伪代码。
关于c++ - 轮廓字体上下颠倒 - glOrtho() 设置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080962/