3

私は現在Qt5.1で作業しており、QGLWidget内にいくつかのOpenGLのものを描画しようとしています:

void Widget::paintGL() {
    startClipping(10, height()-110,100,100);

    qglColor(Qt::red);
    glBegin(GL_QUADS);
        glVertex2d(0,0);
        glVertex2d(500,0);
        glVertex2d(500,500);
        glVertex2d(0,500);
    glEnd();

    qglColor(Qt::green);
    this->renderText(50, 50, "SCISSOR TEST STRING");

    endClipping();
}

クワッドは正しくクリップされますが、テキストはクリップされません。startClipping メソッドを実装する 3 つの方法を試しました。シザー テスト、ビューポートをクリッピング エリアに設定する方法、およびステンシル バッファーを使用する方法です。それらのどれも機能せず、クリッピング領域の端で切り取られるのではなく、文字列全体が描画されました。

今私の質問は次のとおりです:この動作は Qt のバグですか、それとも見逃した、または試すことができる別の可能性がありますか??

4

2 に答える 2

0

1週間試行錯誤した後、私は突然、探していたものを達成するための非常に簡単な方法を見つけました. QGLWidget の代わりに QPainter とそのメソッドを使用すると、renderText()単純にテキスト クリッピングが機能します。

QPainter *painter = new QPainter();
painter->begin();

painter->setClipping(true);

painter->setClipPath(...);   // or
painter->setClipRect(...);   // or
painter->setClipRegion(...);

painter->drawText(...);

painter->end();
于 2013-07-26T11:16:33.870 に答える