Войти
ПрограммированиеФорумГрафика

Вопросы по созданию контекста OpenGL2 / OpenGL3+ (2 стр)

Страницы: 1 2
#15
0:53, 31 мар. 2014

Тебе уже сказали - это одно и тоже.
GLhandle  сейчас не используется, а используется GLuint.


#16
1:17, 31 мар. 2014

Monte-Kristo
Спасибо. Будем учить актуальное)
Еще несколько мелких вопросов:
1) Большая ли разница между OGL 3.0, 3.1 и 3.3?
Сейчас под рукой есть только OGL 3.1 железо, не будет ли потом проблем при расширении до 3.3?
2) Насколько я понимаю, в 3+ версии множество расширений (буферы, шейдеры и пр.) перенесли я ядро. Т.е. в случае, если удалось создать контекст - это гарант того, что весь функционал также присутствует, и не нужно никаких свистоплясок с расширениями (за исключением новых, вроде debug_output)?
UPD: тогда непонятно, почему в местных уроках автор использует загрузку этих функций...
Это связано с тем, что эти функции, несмотря на то, что находятся в ядре, реализованы в драйверах вендоров, а не в виндовой библиотеке. Т.е. это windows-only проблема?
3) Насколько совместим ОГЛ3 с ОГЛ4? Есть ли различия в контекстах и использовании? Или ОГЛ4 - просто эволюционная версия?
Т.е. удастся ли держать общую кодобазу?
4) Не криминально ли в OGL3/4-приложениях юзать ChoosePixelFormat и SwapBuffers вместо более новых wgl-фич?
5) Встречал не раз на этом форуме, что вместо gl3.h советуют использовать стандартные gl.h + glext.h. С чем это связано?

Заранее спасибо.

#17
9:30, 31 мар. 2014

Monte-Kristo
>Ты задаёшь правильные вопросы, но на мой взгляд, бессмысленно поддерживать старое железо и писать что-то на GL 2.1.
Смысл есть как минимум чтоб угодить кучке неудачников со старым железом, тем более что для обычной инди поделки его функционала хватит за глаза.

#18
15:49, 31 мар. 2014

student
1) В создании контекста разницы нет, отличие в новых добавленных функциях.
2) Почитай уроки
3) Ответ в п.1
4) Лично я их использую.
5) OpenGL выглядит сейчас так:
<GL/gl.h> - стандартный OpenGL версии 1.1 + расширения <GL/glext.h>, <GL/glcorearb.h>, <GL/glxext.h>, <GL/wglext.h>
Если ты встречал файл gl3.h, значит он взят из кода к книги Addison Wesley - OpenGL Programming Guide, там автор его сам создал.

#19
16:42, 31 мар. 2014

Если цель - работа с GL3+, то смысла с собой таскать старье вроде gl.h нету. glcorearb.h содержит все функции ядра без устаревшего функционала. Но под виндой не так все просто - нужные (не устаревшие) функции из gl1.1 надо будет самому загружать из opengl32.dll. Стандартные wgl-функции загружать ненужно - они прописаны в wingdi.h

Кстати, пользуясь случаем, позвольте тоже задавать вопрос. Если я например создаю контекст версии 3.0, но видеокарта позволяет больше (например 3.3 или 4.2), то возможно будет использовать функции из ядра старших версий? Например тот же glPrimitiveRestartIndex, который появился в версии 3.1? Или нужно будет доставать нужные функции через расширения?

#20
16:47, 31 мар. 2014

fullspektr
По-моему версия нужна только чтобы убедиться что карта ее поддерживает (в смысле если запросить слишком большую контекст не создастся). У меня в контексте с версией "3.0" работает тесселяция из 4.0

#21
18:38, 31 мар. 2014

Monte-Kristo
Спасибо за ответы!

#22
19:37, 31 мар. 2014

student
> 4) Не криминально ли в OGL3/4-приложениях юзать ChoosePixelFormat и SwapBuffers
> вместо более новых wgl-фич?
Если тебе не нужно MSAA и другие фичи, то да. Хотя и MSAA можно сделать на multisample текстурах вроде как, особенно если у тебя есть постобработка.
Можно даже контекст создавать по-старому. В этом случае он будет максимально поддерживаемой версии и со включённой обратной совместимостью. Правда отладочный контекст таким образом создать не удастся.

student
> 1) Большая ли разница между OGL 3.0, 3.1 и 3.3?
Поставь OpenGL Extensions Viewer, там во вкладке report написано, в какую версию что вошло.

Monte-Kristo
> Если ты встречал файл gl3.h, значит он взят из кода к книги Addison Wesley -
> OpenGL Programming Guide, там автор его сам создал.
Я по-моему файл с таким именем видел на официальном сайте OpenGL.

student
> 3) Насколько совместим ОГЛ3 с ОГЛ4? Есть ли различия в контекстах и
> использовании? Или ОГЛ4 - просто эволюционная версия?
Различия иногда появляются, но очень редко и незаметно. Например, в совместимом профиле OpenGL 4.2 и ниже при вызове glDraw* с отключённым нулевым атрибутом ничего не рисуется. Но начиная с OpenGL 4.3 совместимого профиля, а также в любом core контексте, это изменили, и без нулевого атрибута всё рисуется.

И ещё я заметил у себя на AMD картах, что если создаваемый контекст ниже 3.3, то из списка расширений пропадает GL_ARB_texture_swizzle, которое вошло как раз в версию 3.3. Не знаю, что это означает - баг это или фича, но лучше всё же не создавать версию ниже той, которую собираешься использовать. С контекстом по умолчанию проблемы нет: ведь там самый новый контекст из поддерживаемых.

#23
19:48, 31 мар. 2014

Вот тут есть код по созданию GL3+ контекста:

http://github.com/corporateshark/Android-NDK-Game-Development-Coo… er6/1_OpenGL3

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.