Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: 0x0001 от Июня 01, 2011, 21:54



Название: OpenGL для отрисовки
Отправлено: 0x0001 от Июня 01, 2011, 21:54
добрый день, скажите возможно ли использовать QtOpenGL модуль рендеринга для отрисовки QAbstractButton и производных, а также остальных GUI ??? Если да, то как?
Спасибо.


Название: Re: OpenGL для отрисовки
Отправлено: Авварон от Июня 01, 2011, 22:26
Нет. А вам зачем?


Название: Re: OpenGL для отрисовки
Отправлено: 0x0001 от Июня 01, 2011, 22:38
Нет. А вам зачем?
быстрее ....?


Название: Re: OpenGL для отрисовки
Отправлено: Авварон от Июня 01, 2011, 23:01
Есть интересная опция -graphicssystem opengl, но вот заставляет ли она нативные виджеты рисоваться через огл - яхз. Надо поглядеть как таки кьюстайлы устроены - рисует ли стайл через пейнтер или через нативные вызовы.
Собсно тупой вопрос - ваше приложение тормозит? Или вам "просто так" захотелось огл прикрутить? Знаете ли, офисные машины с интел гма плохо дружат с аппаратным ускорением.


Название: Re: OpenGL для отрисовки
Отправлено: 0x0001 от Июня 02, 2011, 08:06
ваше приложение тормозит? Или вам "просто так" захотелось огл прикрутить? Знаете ли, офисные машины с интел гма плохо дружат с аппаратным ускорением.
4 года назад я переложил рендеринг почти всех MFC контроллов(GUI)  на DirectX 9.0, кстати это очень просто... Ни разу проблем не возникало, учитывая 60% утановок П.О. на нетбуки(~20%) & ноуты(~40%) (П.О. для наглядной диагностики сложного оборудования)
Да, там гарфика, необходимо анимировать , увеличивать, сдвигать, вертеть детали и п.р., но САМАЯ проблема, чтобы всё это было, выглядело в одном Дизайн-стиле, короче вопросы к Отд.Дизайна ;)
Сейчас задача та же (правда нетбуки уже более 60% установок) но на ОС и под Linux и под Win.... т.е. OpenGL only///


Название: Re: OpenGL для отрисовки
Отправлено: Авварон от Июня 02, 2011, 10:45
Попробуйте всё-таки запустить приложение с ключом -graphicssystem opengl


Название: Re: OpenGL для отрисовки
Отправлено: LisandreL от Июня 02, 2011, 11:12
Попробуйте всё-таки запустить приложение с ключом -graphicssystem opengl
Код:
Запускается D:\Work\test-build-desktop\debug\test.exe...
hijackWindow() context created for QLabel(0x28fe4c) 1
[c:\ndk_buildrepos\qt-desktop\src\opengl\qglframebufferobject.cpp line 464] GL Error: 1285
QGLFramebufferObject: Framebuffer incomplete, missing attachment.
QGLFramebufferObject: Framebuffer incomplete, missing attachment.
QGLFramebufferObject: Framebuffer incomplete, missing attachment.
QGLFramebufferObject: Framebuffer incomplete, missing attachment.
QGLFramebufferObject: Framebuffer incomplete, missing attachment.
[c:\ndk_buildrepos\qt-desktop\src\opengl\qglframebufferobject.cpp line 599] GL Error: 1285
QGLWindowSurface: Failed to create valid FBO, falling back
QGLPixelBuffer: Unable to find a pixel format with pbuffer  - giving up.
QGLWindowSurface: Failed to create valid pixelbuffer, falling back
QGLWindowSurface: Using plain widget as window surface QGLWindowSurface(0x68dfd8)
QGLShader::link: "Fragment shader(s) linked, vertex shader(s) linked.
 "
QGLShader::link: "Fragment shader(s) linked, vertex shader(s) linked.
 "
QGLShader::link: "Fragment shader(s) linked, vertex shader(s) linked.
 "
QGLShader::link: "Fragment shader(s) linked, vertex shader(s) linked.
 "
Windows 7 x64
Пути c:\ndk_buildrepos\qt-desktop в системе нет - обычная установка C:\QtSDK\ .


Название: Re: OpenGL для отрисовки
Отправлено: twp от Июня 02, 2011, 13:07
Да, там гарфика, необходимо анимировать , увеличивать, сдвигать, вертеть детали и п.р., но САМАЯ проблема, чтобы всё это было, выглядело в одном Дизайн-стиле, короче вопросы к Отд.Дизайна ;)
Сейчас задача та же (правда нетбуки уже более 60% установок) но на ОС и под Linux и под Win.... т.е. OpenGL only///

если нужно встроить контролы в OpenGL сцену то есть отличная демка /QtSDK/Demos/4.7/boxes. А вообще с пятой версии Qt весь рендеринг будет производится средствами OpenGL



Название: Re: OpenGL для отрисовки
Отправлено: Авварон от Июня 02, 2011, 13:12
Не весь, а только QML. с++ виджеты так и будут использовать пейнтер.
Попробовал запустить на маке с огл график системой. Срипя запустилось, не отрисовывало иконки, были небольшие артефакты. Огл такой огл:(
Надо конечно в багтрекер писать насчет огла. Но там людей мало, хз кто этим заниматься будет.


Название: Re: OpenGL для отрисовки
Отправлено: twp от Июня 02, 2011, 13:23
Не весь, а только QML. с++ виджеты так и будут использовать пейнтер.
а что тогда значит вот это
Цитировать
Изменение архитектуры графического стека. В качестве центральных элементов новой архитектуры будут выступать Qt Quick и QML Scenegraph. Поддержка QPainter будет сохранена для выполнения расширенных функций, но не сможет быть использована в основном интерфейсе пользователя. Для работы Qt система должна будет поддерживать OpenGL (ES) 2.0. QWidgets будет отображаться поверх графической сцены, а не наоборот, как сейчас реализовано в версии Qt 4;


Название: Re: OpenGL для отрисовки
Отправлено: Авварон от Июня 02, 2011, 14:29
То что они переделают механизм СЦЕНЫ (точнее уже переделали), а виджеты (qml'ные) будут базироваться на ней. Стандартные с++ виджеты будут убраны из QtGui и перенесены в QtWidgets. Их трогать вообще не будут (читай - их закопали).


Название: Re: OpenGL для отрисовки
Отправлено: twp от Июня 02, 2011, 15:46
хм, если смотреть на  эту (http://www.opennet.ru/opennews/art.shtml?num=30507) схему, то виджеты как и прежде используют 2D API (QPainter), но отрисовка идет через граф сцены и OpenGL, а нативных вызовов вроде как и нет. Или это совсем другие виджеты?


Название: Re: OpenGL для отрисовки
Отправлено: Авварон от Июня 02, 2011, 15:56
Пейнтер и сейчас "может" рисовать через огл. Нативных вызовов там и так нету - я таки поглядел как работают стили. Всё равно конечная отрисовка идет через пейнтер.
Собсвенно на топ уровне будет лежать сцена, в к-ую помещены виджеты, отрисованные в 2д режиме и/или qml элементы. Таким образом, сами виджеты никто не трогает, поверх них ложится лишь еще 1 уровень абстракции - сцена, к-ую и переделывают.