3D текст на QGLWidget в Qt 4.6.3 - PullRequest
       18

3D текст на QGLWidget в Qt 4.6.3

3 голосов
/ 18 августа 2010

Я ищу простой способ рисования трехмерного текста на QGLWidget без использования FTGL, FreeType, "рендеринга в текстуру" или объектов кадрового буфера , то есть с использованием только документированных функций Qt 4, без дополнительных библиотек.

Идеи? * * 1005

P.S. «3D-текст» означает, что буквы плоские и имеют нулевую толщину, но могут вращаться в трехмерном пространстве. Подумайте о «Звездные войны, начинающие ползать» - плоские буквы, расположенные в трехмерном пространстве. Кроме того, я уже знаю, что могу написать свой класс визуализации текста, который бы отображал глифы на текстуре и т. Д. Я ищу простой способ сделать то же самое, используя стандартные функции Qt 4 . Например, QPainter, вероятно, имеет внутренний доступ ко всем необходимым данным.

1 Ответ

7 голосов
/ 19 августа 2010

Нашел что-то.

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, и никаких процедур триангуляции в библиотеке. Я предполагаю, что эта функциональность еще не реализована в Qt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...