15

QGLWidget で基本的な形状を描画しようとしています。アンチエイリアシングを有効にして線を滑らかにしようとしていますが、うまくいきません。

これは私が現在試していることです:

QGLWidget *widget = ui->renderWidget;

QPainter painter;

widget->makeCurrent();
glEnable(GL_MULTISAMPLE);
glEnable(GL_LINE_SMOOTH);

painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::HighQualityAntialiasing);

painter.begin(widget);

ただし、このペインターで描画されたものはすべて、エッジがギザギザのままです。他に何をする必要がありますか?

4

4 に答える 4

16

解決策を見つけました。別の問題をデバッグしているときに、デバッグ出力に、begin() の呼び出しの前にレンダーヒントを設定できないというメッセージが見つかりました。

以下の作品:

QGLWidget *widget = ui->renderWidget;

QPainter painter;

widget->makeCurrent();
glEnable(GL_MULTISAMPLE);
glEnable(GL_LINE_SMOOTH);

painter.begin(widget);

painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::HighQualityAntialiasing);
于 2012-06-21T15:19:24.657 に答える
10

ウィジェット全体でアンチエイリアスを有効にしてみてください。

QGLWidget::setFormat(QGLFormat(QGL::SampleBuffers));

于 2012-06-11T13:22:19.147 に答える