Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: altk от Октябрь 29, 2009, 21:54



Название: OpenGL 3.2 и Qt4.5.3
Отправлено: altk от Октябрь 29, 2009, 21:54
Использую платформу Windows Vista. Нужно написать приложение с использованием функций OpenGL 3.2. Как всем известно,стандартные библиотеки, которые идут с виндой поддерживают только OpenGL 1.4. С сайта opengl.org я скачал файлы glext.h и wglext.h. На одном из русскоязычных сайтов нашел парсер, который при помощи двух файлов создает два исходника(.h и .cpp), которые добавляются в проект. После добавления становится возможным использование новых фукций. Теперь подскажите пожалуйста, как правильно подключить всё это дело, чтобы оно заработало вместе c Qt4. Я так понимаю нужно инициализировать контекст специальным образом? Если честно, я пока совсем не знаю решения...


Название: Re: OpenGL 3.2 и Qt4.5.3
Отправлено: azazello от Ноябрь 24, 2009, 19:42
(если ещё актуально) насколько я помню, QT имеет инициализацию только OGL 2.x.
OGL 3.x инициализируется отдельно(и его ещё вроде нет в QT).


Название: Re: OpenGL 3.2 и Qt4.5.3
Отправлено: break от Ноябрь 25, 2009, 03:59
Вообще то есть такая возможность - к сожалению я сам сейчас далек от 3D графики но точно знаю что можно использовать OGL 3.X совместно с QGLWidget - копайте в сторону переопределения initializeGL в QGLWidget


Название: Re: OpenGL 3.2 и Qt4.5.3
Отправлено: azazello от Ноябрь 25, 2009, 13:00
копайте в сторону переопределения initializeGL в QGLWidget
ну это и означает, что в Qt нету
3.x создаётся через # WGL_ARB_create_context /# GLX_ARB_create_context

If version 3.2 or greater is requested, the context returned may
    implement any of the following versions:

      * The requested profile of the requested version.
      * The requested profile of any later version, so long as no
   features have been removed from that later version and profile.


Название: Re: OpenGL 3.2 и Qt4.5.3
Отправлено: break от Ноябрь 25, 2009, 16:41
Я попросил программиста графики из нашей фирмы ответить на этот спорный вопрос - у нас как раз работают ф-ции OpenGL 3.X в Qt 4.X

Вот его комментарий
Цитировать
XOP:
В QGLWidget действительно создается старый контекст, но - все функции из новой спецификации OpenGL вполне нормально работают, по крайней мере на видеокартах от NVIDIA. На ATI не проверял - не было ни возможности, ни необходимости.

Еще на форуме opengl.org есть кусок кода qt-виджета, в котором создается именно новый контекст (под X11):
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=262519
Под винду аналогичный код будет еще проще.

С его слов я понял так: вам надо использовать ваши h и cpp для вызова соответствующих ф-ций GL - после создания QGLWidget(точнее перед вызовом ф-ции initializeGL) уже создан GL контекст и он является текущим - работайте с ним.


Название: Re: OpenGL 3.2 и Qt4.5.3
Отправлено: azazello от Декабрь 01, 2009, 17:17
В QGLWidget действительно создается старый контекст, но - все функции из новой спецификации OpenGL вполне нормально работают, по крайней мере на видеокартах от NVIDIA. На ATI не проверял - не было ни возможности, ни необходимости.
лучше разделять контексты (ибо nvidia дрова прощают многое, а вот ati, а тем более intel\via вмогут такого не простить).
также, рендеры для 2.x и 3.x - явно разные(при правильной архитектуре движка) - так что по коду всё-равно разные реализации


Название: Re: OpenGL 3.2 и Qt4.5.3
Отправлено: break от Декабрь 01, 2009, 18:28
Цитировать
ибо nvidia дрова прощают многое

Ну ATI так это вообще какашка по сравнению с NVidia - до сих пор нормальных дров для Линукс нет, а уж головники программистов графики с ATI картами всем известны. По поводу intel - какая разница будет рнаботать или нет если мощных карт для 3D на базе intel все равно нет? Это получается минимальные системные требования должны ограничивать...