c – 如何使用QOpenGLWidget渲染文本

前端之家收集整理的这篇文章主要介绍了c – 如何使用QOpenGLWidget渲染文本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在旧版本的Qt中有 QGLWidget,有一个很好的函数叫做 renderText.现在我使用 QOpenGLWidget类,并且缺少渲染文本的功能.

有没有简单的方式来渲染文本使用QOpenGLWidget?我不想从头开始用OpenGL构建整个文本渲染

解决方法

我最终做了一个类似于@jaba写的解决方案.我也注意到一些图形损坏,除非我在方法的结尾调用了painter.end().
void MapCanvas::renderText(double x,double y,double z,const QString &str,const QFont & font = QFont()) {
    // Identify x and y locations to render text within widget
    int height = this->height();
    GLdouble textPosX = 0,textPosY = 0,textPosZ = 0;
    project(x,y,0f,&textPosX,&textPosY,&textPosZ);
    textPosY = height - textPosY; // y is inverted

    // Retrieve last OpenGL color to use as a font color
    GLdouble glColor[4];
    glGetDoublev(GL_CURRENT_COLOR,glColor);
    QColor fontColor = QColor(glColor[0],glColor[1],glColor[2],glColor[3]);

    // Render text
    QPainter painter(this);
    painter.setPen(fontColor);
    painter.setFont(font);
    painter.drawText(textPosX,textPosY,text);
    painter.end();
}
原文链接:https://www.f2er.com/c/114576.html

猜你在找的C&C++相关文章