C++ 在QT QGLWidget上绘制的文本看起来失真

C++ 在QT QGLWidget上绘制的文本看起来失真,c++,qt,opengl,C++,Qt,Opengl,我试图在我的QOpenGLWidget上画文本,但是测试看起来完全失真了。这看起来和透明度有关 这是我的绘图代码: void MyGLWidget::paintGL() { QPainter painter; painter.begin(this); painter.setRenderHint(QPainter::Antialiasing); painter.beginNativePainting(); // Paint to frame buffer

我试图在我的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();
}
这就是文本的外观:


我正在使用Qt5.4,所以我发现了问题。 它实际上是在文本之前的一个绘图函数中。 代码中的某个地方有: glPolygonMode(GLU前、后、GLU线); 因此: glPolygonMode(GLU前、后、GLU填充);
就在文本绘图解决问题之前。

最好使用互补色(例如,在您的案例中为黄色)来演示扭曲的文本:)为什么在Qt 5.4中使用
QGLWidget
?最好使用
QOpenGLWidget
QOpenGL
类,因为
QGLWidget
QGL
类已经过时,您不应该在新代码中使用它们。很抱歉,我犯了一个错误,我实际上使用的是QOpenGLWidget