我的左下角有一个x,y,z轴,让用户了解方向。我想用适当的x,y和z标签标记这些轴。
我知道我不想使用Glut来实现这一点,因为它已经过时了,并且想知道我是否可以利用QPainter帮助标记这些轴。
注意:我已经看过这个,但发现它太多了:http://nehe.gamedev.net/tutorial/bitmap_fonts/17002/
答案 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();
}
答案 1 :(得分:0)
因为(你说)由于某种原因你无权访问QPainter,你需要某种OpenGL字体渲染库。您可以使用FTGL,也可以使用freetype 2创建自己的渲染器。从Qt版本4.8.1开始,应该可以使用QRawFont访问单个字形(无需直接处理freetype),这样可以更轻松地实现自己的字体渲染例程。
如果您的对象是QPaintDevice或QGLWidget,则使用QPainter。它可能比传统的纹理字体慢,但它可以避免(从)另一个编码问题。