在Qt 4.6.3中的QGLWidget上创建3D文本

3
我正在寻找一种简单的方法,在不使用FTGL、FreeType、"render to texture"或帧缓冲对象的情况下,在QGLWidget上绘制3D文本,即仅使用经过记录的Qt 4函数,没有其他库。
有什么想法吗?
P.S. "3D文本"意味着字母是平面的,厚度为零,但可以在3D空间中旋转。想想"星球大战开场爬行字幕" - 平面字母位于3D空间中。此外,我已经知道我可以编写自己的文本渲染类,将字形渲染到纹理上等等。我正在寻找一种使用标准Qt 4函数实现相同效果的简单方法。例如,QPainter可能已经在内部访问了所有所需数据。
1个回答

7

找到了一些内容。

图片

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三角测量器。
--编辑--

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


这个运行良好。你知道如何填充文本多边形吗?我尝试了不同的方法,使用GL_TRIANGLES和GL_POLYGON都没有成功。 - StephanH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接