c++ - 轮廓字体上下颠倒 - glOrtho() 设置不正确

标签 c++ opengl fonts coordinates

我正在 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/

相关文章:

android - 如何遍历字符串并为某些关键字分配不同的颜色以在 Android 中显示文本?

c++ - 小数 Eigen 稀疏矩阵乘法误差

c++ - Box2D 和过剩。帧率问题

OpenGl 框全屏

iphone - iPhone-sdk 中有哪些西里尔字体?

css - 安全草书网络字体?

c++ - 用 C++ 打包库

c++ - 与 DEBUG 宏混淆

c++ - 制作一个复制构造函数,对输入对象进行深度复制(使用数组)

c++ - 带 openGL glRecti 的棋盘格