Я пытаюсь нарисовать текст поверх моего 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();
}
И это, как текст выглядит:
Я использую QT 5.4
Лучше использовать дополнительный цвет (например, желтый в вашем случае), чтобы продемонстрировать искаженный текст:) – Tay2510
Почему вы используете 'QGLWidget' в Qt 5.4? Лучше использовать классы 'QOpenGLWidget' и' QOpenGL', потому что классы 'QGLWidget' и' QGL' устарели, и вы не должны использовать их в новом коде. – Nejat
Извините, что ошибся с моей стороны, я действительно использую QOpenGLWidget – SunnyDark