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