Проблема с выводом текста на экран (Qt5, OpenGL)

Модератор: Модераторы разделов

Ответить
MiK13
Сообщения: 1164
ОС: Linux Debian

Проблема с выводом текста на экран (Qt5, OpenGL)

Сообщение MiK13 »

Всем доброго времени суток!
Возникла задача: сделать версию АРМа, но без управления, только чтобы смотреть результаты работы системы.
И, чтобы она была более "современной" решили использовать Qt 5 и 64-битную версию Linux. Всё, вроде, работает, за исключением отображения текста на экоане, куда выводится основная информация.
Код функции вывода текста:

Код: Выделить всё

void CBigView::OutString(int x, int y, char *s)
{
    glPushAttrib(GL_CURRENT_COLOR);
    glPixelZoom(1,1);
    glViewport(0,0,(GLsizei) width(), (GLsizei) height());
    glColor3f(textBrightness,textBrightness,textBrightness);
    renderText(x,y,0,QString(s), labelsFont);
    glPopAttrib();
}

При выводе строки OutString(50, 50, "11111111"); на экране появляется
11111.jpg
11111.jpg (2.42 КБ) 6229 просмотров

Подобная "картинка" во всех местах, где надо вывести надпись. В чём может быть причина?
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Проблема с выводом текста на экран (Qt5, OpenGL)

Сообщение NickLion »

Покажите renderText

UPD или у Вас QGLWidget?
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Проблема с выводом текста на экран (Qt5, OpenGL)

Сообщение MiK13 »

NickLion писал(а):
04.08.2017 12:48
Покажите renderText

UPD или у Вас QGLWidget?

renderText -- какая-то стандартная функция из Qt. Как я понимаю из QGLWidget.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Проблема с выводом текста на экран (Qt5, OpenGL)

Сообщение NickLion »

Просто странно звучит "современная" программа и устаревший класс QGLWidget...

Что за OpenGL, кстати?
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Проблема с выводом текста на экран (Qt5, OpenGL)

Сообщение MiK13 »

NickLion писал(а):
04.08.2017 13:32
Просто странно звучит "современная" программа и устаревший класс QGLWidget...

Что за OpenGL, кстати?

Поэтому и взял слово "современная" в кавычки :-)
Дело в том, что в рамках проекта я пишу, в основном, демоны для обработки потоков данных и использую простой C. И Qt почти не знаю.
А АРМ (интерактивная часть проекта) писали другие люди. Правда, я для него писал вывод изображения с масштабированием, но писал сначала на С используя GLUT. А потом просто вставил этот код в класс.
Кстати, сейчас один из авторов АРМа сказал, что прочитал, что QGLWidget устарел и вместо него используется QOpenGLWidget. Но в нём нет renderText, текст надо выводить как-то по-другому.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Проблема с выводом текста на экран (Qt5, OpenGL)

Сообщение NickLion »

renderText очень специфичная вещь, и может не работать по куче причин.
Обратите внимание на:
(http://doc.qt.io/qt-5/qglwidget.html#renderText) писал(а):Note: This function is not supported on OpenGL/ES systems.
Note: This function can only be used inside a QPainter::beginNativePainting()/QPainter::endNativePainting() block if a painter is active on the QGLWidget.

Плюс:
(https://bugreports.qt.io/browse/QTBUG-10362?focusedCommentId=115475&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-115475) писал(а):renderText() depends heavily upon the old, fixed function GL pipeline, and simply won't work if you e.g. have an active shader program


Вывод текста в QOpenGLWidget как вариант: https://stackoverflow.com/questions/2821600...h-qopenglwidget
Спасибо сказали:
Ответить