Qt 4.6.3中QGLWidget上的3D文本

时间:2010-08-18 17:40:40

标签: c++ qt opengl qt4

我正在寻找一种在QGLWidget 上绘制3D文本的简单方法,而不使用FTGL,FreeType,“渲染到纹理”或帧缓冲对象,即仅使用文档化的Qt 4函数,没有其他库。

想法?

P.S。 “3D文本”表示字母是平的并且厚度为零,但可以在3D空间中旋转。想想"Star wars opening crawl" - 位于3D空间中的扁平字母。另外,我已经知道我可以编写我的文本渲染类,它会将字形渲染到纹理等等。我正在寻找一种简单的方法来使用标准Qt 4函数来做同样的事情。例如,QPainter可能在内部访问所有必需的数据。

1 个答案:

答案 0 :(得分:7)

找到了一些东西。

picture

QPainterPath path;
glDisable(GL_LIGHTING);
QFont font("Arial", 40);
path.addText(QPointF(0, 0), QFont("Arial", 40), QString(tr("This is a test")));
QList<QPolygonF> poly = path.toSubpathPolygons();
for (QList<QPolygonF>::iterator i = poly.begin(); i != poly.end(); i++){
    glBegin(GL_LINE_LOOP);
    for (QPolygonF::iterator p = (*i).begin(); p != i->end(); p++)
        glVertex3f(p->rx()*0.1f, -p->ry()*0.1f, 0);
    glEnd();
}
glEnable(GL_LIGHTING);

但看起来我仍然需要2D三角测量仪 --edit -

到目前为止,我还没有找到使用Qt渲染3D文本的其他方法,也没有找到库中的三角剖分例程。我假设这个功能还没有在Qt中实现。