在QT QGLWidget上绘制的文字看起来很扭曲

时间:2015-01-16 09:37:37

标签: c++ qt opengl

我正在尝试在QOpenGLWidget上绘制文本但是测试看起来都是扭曲的。它看起来与透明度有关......

这是我的绘图代码:

void MyGLWidget::paintGL()
{

    QPainter painter;
    painter.begin(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.beginNativePainting();

    // Paint to frame buffer first
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glEnable(GL_DEPTH_TEST);
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_CULL_FACE);

    setView();
    renderGeometry(m_prgMesh);
    renderGrid();

    glDisable(GL_DEPTH_TEST);
    glDisable(GL_CULL_FACE);
    painter.endNativePainting();
    painter.setRenderHint(QPainter::TextAntialiasing);
    painter.setPen(Qt::black);
    painter.setFont(QFont("Arial", 10));
    painter.drawText(10,20, QString("Sample string"));
    //painter.drawText(10,10, QString("Cursor position: %1,%2").arg(QString::number(m_cursorPos.x()), QString::number(m_cursorPos.y())));
    painter.end();
    update();
}

这就是文字的样子: enter image description here

我正在使用QT 5.4

1 个答案:

答案 0 :(得分:0)

好的,所以我发现了问题。 它实际上是在文本之前的一个绘图函数中。 代码中的某处有:     glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); 所以放置:     glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 就在文字绘图之前修复了问题。