在OpenGL中为Qt项目绘制轴文本标签

时间:2012-05-21 16:18:44

标签: qt opengl text drawing rendering

我的左下角有一个x,y,z轴,让用户了解方向。我想用适当的x,y和z标签标记这些轴。

我知道我不想使用Glut来实现这一点,因为它已经过时了,并且想知道我是否可以利用QPainter帮助标记这些轴。

注意:我已经看过这个,但发现它太多了:http://nehe.gamedev.net/tutorial/bitmap_fonts/17002/

2 个答案:

答案 0 :(得分:2)

您可以使用QPainter在任何绘图设备上绘制文本。 QGLWidget就是这样的绘画设备;然后,QPainter将使用OpenGL绘制文本(或任何您想要绘制的内容)。猜测你正在使用QGLWidget绘制你的场景,你可以把QPainter的东西放在paintEvent的末尾:

MyGLWidget::paintEvent(QPaintEvent *event)
{
    // draw OpenGL scene
    // ...

    // draw labels:
    QPainter p(this);
    p.drawText(..., ..., "X");
    p.drawText(..., ..., "Y");
    p.drawText(..., ..., "Z");
    p.end();
}

另请查看Qt OpenGL Overpainting Example

答案 1 :(得分:0)

因为(你说)由于某种原因你无权访问QPainter,你需要某种OpenGL字体渲染库。您可以使用FTGL,也可以使用freetype 2创建自己的渲染器。从Qt版本4.8.1开始,应该可以使用QRawFont访问单个字形(无需直接处理freetype),这样可以更轻松地实现自己的字体渲染例程。

如果您的对象是QPaintDevice或QGLWidget,则使用QPainter。它可能比传统的纹理字体慢,但它可以避免(从)另一个编码问题。