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

OpenGL 2 - 3 глупый вопрос

#0
22:54, 14 сен 2009

Вообщем я знаю... спрашиваю глупый, наверное тупой вопрос.. Но прошу сразу прощения за это и хочу сказать что прочитал много тем на этом форуме и все равно ни чего до конца не понял... все таки это форум и он для того и нужен чтобы спрашивать вопросы ))....

Проблема такая... Я понимаю что OpenGL  это графический АПИ, который предоставляет доступ к функциям видеокарты, через определенный уровень абстракции(драва)...

Для того чтобы пользоваться этим АПИ нужно подключить gl.h, opengl32 либ и длл...  Новые функции которых нет в данном АПИ но есть в новых видеокартах, легко загружаются через соответствующие расширения.. Тут все логично и понятно...

Теперь что конкретно непонятно... Очень часто встречаю информацию о OpenGL 2 и  OpenGL 3, но не могу понять что это.... Т.е. где то есть gl2.h и  gl3.h, соответственно opengl_2_32 либ ?? Подключив которые, появляется новое АПИ, где старые расширения внесены как обычные функции ???.... , если да, то почему то я их не могу найти... И какой в этом смысл... типо обычные расширения тормозят что ли ??

#1
23:00, 14 сен 2009

правильно, форум для того, чтобы спрашивать, а не говорить насколько по-вашему тупой и глупый этот вопрос.
наверняка, никому не интересно отвечать на тупые и глупые вопросы. я бы за такие названия тем расстреливал из баномёта.

#2
23:04, 14 сен 2009

gribok
тебе точно никто не ответит, ты даже ничитал об OpenGL, а уже начинаеш спрашивать что и так расписанно на офф сайте.

P.S. GooGle.ru в помощь

#3
23:11, 14 сен 2009

тт..  странно делать вывод что я ничего не читал об OpenGL... да и наверное 90% чего тут спрашивают где-нибудь да написано ;)...  и это можно найти в гугле.. 

2PlatinumKiller если вы такой умный, разве не лучше было вместо строчки обсерания, написать строчку ответа...

#4
23:35, 14 сен 2009

bool
> никому не интересно отвечать на тупые и глупые вопросы
+1

gribok
> если вы такой умный, разве не лучше было вместо строчки обсерания, написать строчку ответа...
не лучше бы тебе сначала зайти на www.opengl.org

#5
23:44, 14 сен 2009

)) омг.. спс... все такие добрые )....

#6
0:53, 15 сен 2009

gribok
Незнаю что у вас у сишников за хидеры, но скорее всего, все функции не статические (акромя OGL1.0 или даже OGL1.1), а подгружаются динамически, одновременно с этим определяется, какие из расширений доступны. В своей же программе, ты используешь нужный функционал расширений, только если они доступны, если они не доступны, используешь алтернатывные пути решения или отказываешься от части функционала совсем.

В новых хидерах содержится весь функционал старых (ну может за исключением deprecated функций), все также загружается динамически и ты все также проверяешь наличие нужных расширений, перед их использованием.
Хотя есть вероятность, что часть функций ядра OpenGL линкуется статически, например все до OGL1.5, в таком случае, ты, как бэ, сознательно отказываешься от поддержки своим приложением стареньких видюшечек (вылезет ошибка, что не могу найти точку входа в процедуру) и используешь весь функционал OGL1.5 без лишних проверок. Как это сделано в твоих хидерах я не знаю.

Вобщем как то так.

#7
0:59, 15 сен 2009

gribok
Сложно описать в двух словах, но я попробую не углубляясь в тонкости...
Версия ОпенГЛ - это набор функций включённых в стандарт (в ядро)... Соответственно если дрова говорят о поддержке версии 2.0, то поддерживается всё то, что является функционалом этой версии... Остальные расширения не обязательны для 2.0 будут...
Инициализация ничем не отличается, нет никаких gl2.h, opengl2_32.lib и т.п.
Простой пример, есть расширение GL_EXT_MY, есть функция glMyDoEXT()...
Проходит время, выходит очередная версия ОпенГЛ и решают, что расширение важное и всем нужное, поэтому его включают в стандарт... Это означает, что теперь нет нужды смотреть наличия расширения, так как расширение находится в ядре и достаточно проверить версию ОпенГЛ... Да и смысла в проверке расширение GL_EXT_MY нет никакого, так как функционал может несколько отличаться от этого расширения, да и названия функций будут уже другие...
Вот появляется в glext.h строчки аля GL_VERSION_N_M, и там появляется новая функция glMyDo(), уже без постфикса...
Это один из вариантов того, как может быть, на самом деле может быть иначе, просто если я буду расписывать все вариации и тонкости, то будет много букв... Я и так думаю написал мало, что может не совсем понятно будет что к чему... Читай вики, спеки и прочее...

#8
1:01, 15 сен 2009

gribok
То, что тебе никто сразу не стал отвечать, а послали в гугл, это оправдано, потому как, найти нужную информацию, бывает гораздо проще, чем сочинять текст вопроса, хотя опять таки нужно знать, как спросить у гугла.

Собсно вчера был день программиста, вот наверно наотмечались, кто-то злой ходит, кто-то еще не протрезвел.

И никогда не пиши, что вопрос глупый, так ты сам к себе не уважительно относишься и не жди поэтому, помощи от других, по серьезному врядли кто ответит.

#9
1:09, 15 сен 2009

В платформ сдк для виндовс есть opengl.lib датированый еще 95(96) годом и gl.h такой же давности. Это opengl 1.0
Все последующие версии можно получить добавляя расширения. Из-за полной совместимости всех версий opengl эта старая версия остается актуальной до сих пор.
gl2.h нету, opengl 2 это opengl 1.0 + куча расширений. gl3.h есть черновой вариант, для спецификации opengl 3.1. Скачать можно отсюда - http://www.opengl.org/registry/api/gl3.h
з.ы. надеюсь внятно обьяснил. Реакция "добрых людей" поразила...

#10
1:09, 15 сен 2009

ок спс...  т.е. если я правильно понял, то glext.h постоянно обновляется и те функции которые перешли в ядро теряют префикс в новых версиях glext.h. Не совсем понял зачем тогда gl3.h ?

#11
1:11, 15 сен 2009

gribok
>gl3.h
Его подключают вместо gl.h. В нем отсутствуют deprecated-функции и т.п.

#12
1:17, 15 сен 2009

gribok
> ок спс... т.е. если я правильно понял, то glext.h постоянно обновляется и те
> функции которые перешли в ядро теряют префикс в новых версиях glext.h.

Ну чтото вроде того...

> А зачем тогда gl3.h ?

Убран устаревший для ОпенГЛ 3 функционал...

#13
10:14, 15 сен 2009

Da Man
> opengl 2 это opengl 1.0 + куча расширений
Ну не совсем так...
Спецификация OpenGL 2.0 это конкретная версия данного API с заданным функционалом.
А механизм расширений позволяет не менять версии API каждый месяц с появлением новых функций, а тестировать их, и уже потом по мере необходимости добавлять в новую версию API. Или наоборот, устаревший функционал не выбрасывается на корню, а переводится в из стандартного функционала в расширение, как например поступили в OpenGL 3.1 и 3.2 весь старый функционал доступен через расширение.

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

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