0

ユーザーに向きのアイデアを与えるために、左下隅にx、y、z軸があります。これらの軸に適切なx、y、zラベルを付けたいと思います。

Glutは古くて時代遅れであるため、これを実現するためにGlutを使用したくないことはわかっています。また、QPainterを利用してこれらの軸にラベルを付けることができるかどうか疑問に思っていました。

注:私はこれを見ましたが、あまりにも多く見つけました:http: //nehe.gamedev.net/tutorial/bitmap_fonts/17002/

4

2 に答える 2

2

QPainterを使用して、任意のペイントデバイスでテキストを描画できます。QGLWidgetはそのようなペイントデバイスです。QPainterは、OpenGLを使用してテキスト(または描画したいもの)を描画します。QGLWidgetを使用してシーンを描画していると仮定すると、paintEventの最後にQPainterのものを置くことができます。

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

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

QtOpenGLオーバーペイントの例もご覧ください。

于 2012-05-21T16:39:59.573 に答える
0

(あなたが言ったように)何らかの理由でQPainterにアクセスできないため、OpenGL用のある種のフォントレンダリングライブラリが必要です。FTGLを使用することも、 freetype2を使用して独自のレンダラーを作成することもできます。Qtバージョン4.8.1以降では、QRawFontを使用して(freetypeを直接処理することなく)個々のグリフにアクセスできるようになります。これにより、独自のフォントレンダリングルーチンの実装がさらに簡単になります。

オブジェクトがQPaintDeviceまたはQGLWidgetの場合は、QPainterを使用します。従来のテクスチャフォントよりも遅いかもしれませんが、別のコーディングの問題を回避できます。

于 2012-05-21T17:46:45.720 に答える