#opengl
#opengl
Вопрос:
В каком-то руководстве мне сказали, что контекст OpenGL зависит от конкретной операционной системы, мы должны использовать WGL, EGL, GLX и т.д. для создания контекста. Сообщают ли они экземпляру OpenGL, как выглядит контекст? или реализация OpenGL полностью отличается на разных платформах?
Комментарии:
1. Так зависит ли реализация от конкретной оконной системы?
2. И, например, драйвер в Windows OpenGL может понимать только контекст WGL?
3. Но WGL создает контекст, поэтому OpenGL должен подчиняться WGL, верно?
4. Или, наоборот, WGL подчиняется OpenGL?
5. WGL — это API между OpenGL и оконным системным интерфейсом Windows. Я рекомендую прочитать спецификацию основного профиля API OpenGL 4.6 — Привязки оконной системы 1.3.6
Ответ №1:
Подумайте об этом, как о почте.
Чтобы письмо правильно дошло по почте, в нем должен быть указан действительный адрес. Действительность адреса определяется конкретной используемой вами почтовой системой с учетом различных применимых законов, обычаев и так далее. Но эта система понятна для любого читателя и может получить письмо из любого места практически в любом месте. Адреса в конкретной почтовой системе работают одинаково для всех.
Но у каждого свой почтовый ящик. У каждого есть свое место, куда они помещают букву, чтобы она попала туда, куда она идет.
Конкретные люди, которые получают письмо, — это разные люди из разных мест. Центры обработки писем разные, как и водители грузовиков, самолеты и так далее. Все, что должно произойти для транспортировки письма от его источника к месту назначения, будет отличаться для разных источников / мест назначения.
Но все они работают в соответствии с одной и той же системой адресации. Пользователь почтовой системы не заботится о мелочах; если они укажут правильный адрес в письме (и почтовые расходы), то оно (теоретически) попадет туда, куда должно.
Адрес в вашем письме похож на OpenGL. Это стандарт, который понимают все. В нем описывается, как преобразовать адрес в местоположение для отправки письма / как интерпретировать команды рендеринга для создания изображения.
Ваш конкретный почтовый ящик похож на интерфейс WGL, GLX или EGL для создания контекста. Это средства, с помощью которых вы получаете доступ к процессу отправки письма на адрес / рендеринга через OpenGL. Адрес имеет одинаковое значение независимо от того, в какой почтовый ящик вы его помещаете.
Ваш почтовый оператор похож на реализацию / контекст OpenGL. Он выполняет фактическую работу по обеспечению того, чтобы письмо отправлялось в местоположение, определенное стандартом адреса / выполнение команд рендеринга на графическом процессоре для рендеринга в соответствии со стандартом OpenGL.
Есть одно исключение из этой аналогии: фреймбуфер по умолчанию. Фреймбуфер по умолчанию в OpenGL представляет изображения, принадлежащие операционной системе / оконному менеджеру / etc. Таким образом, состав фреймбуфера по умолчанию определяется в процессе создания контекста OpenGL. Параметры создания контекста могут влиять на наличие буферов back / left / right, наличие буфера глубины и / или трафарета, Формат его изображений и т. Д.
Комментарии:
1. Итак, реализацию необходимо разработать для всех почтовых ящиков, но как реализация узнает, какой почтовый ящик (тип контекста) используется?
2. @AlanJian: Как почтальон извлекает почту из почтового ящика? Как человеку, отправляющему письмо, вам не нужно знать; это зависит от дизайнера ящика и самих носителей письма. То же самое и здесь; если вы не пытаетесь написать реализацию OpenGL или написать операционную систему или аналогичную структуру, это не имеет значения. Это вопрос между двумя сторонами, ни одна из которых не является вами.
3. Упс, прошу прощения за это, я потратил много времени, чтобы подумать о том, как производитель это делает