2015-01-16 2 views
0

Я пытаюсь нарисовать текст поверх моего QOpenGLWidget, однако тест выглядит искаженным. Похоже, что-то делать с прозрачностью ...Текст, нарисованный над QT QGLWidget выглядит искаженным

Это мой рисунок код:

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

+0

Лучше использовать дополнительный цвет (например, желтый в вашем случае), чтобы продемонстрировать искаженный текст:) – Tay2510

+0

Почему вы используете 'QGLWidget' в Qt 5.4? Лучше использовать классы 'QOpenGLWidget' и' QOpenGL', потому что классы 'QGLWidget' и' QGL' устарели, и вы не должны использовать их в новом коде. – Nejat

+0

Извините, что ошибся с моей стороны, я действительно использую QOpenGLWidget – SunnyDark

ответ

0

Итак, я нашел проблему. Это было фактически в одной из функций чертежа перед текстом. Где-то в коде было: glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); Итак, размещение: glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); Непосредственно перед текстовым рисунком исправлена ​​проблема.