我正在尝试在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();
}
这就是文字的样子:
我正在使用QT 5.4
答案 0 :(得分:0)
好的,所以我发现了问题。 它实际上是在文本之前的一个绘图函数中。 代码中的某处有: glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); 所以放置: glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); 就在文字绘图之前修复了问题。