Нужно ли загружать функции для каждого контекста opengl отдельно? - PullRequest
4 голосов
/ 06 января 2020

Я пытаюсь загрузить функции opengl на windows, используя рад. Вскоре я понял, что мне нужен корректный контекст opengl для загрузки функций. Все работает, но я не совсем уверен, стоит ли загружать функции opengl каждый раз, когда я создаю окно.

Являются ли эти функции общими для нескольких контекстов opengl, или мне нужно загружать их для каждого создаваемого мной контекста?

Ответы [ 2 ]

3 голосов
/ 07 января 2020

Семантика загрузки функций различается в разных средах:

  • WGL (= Win32): указатели на функции привязаны к контексту, поэтому вы должны управлять контекстный набор функций и используйте их соответственно.

  • GLX (= X11): указатели на функции универсальны между контекстами, отправка в реализацию происходит внутри.

  • macOS: указатели на функции универсальны, однако несколько динамически загружаемых функций указываются c для Apple и используются редко, поэтому это не проблема

2 голосов
/ 06 января 2020

Вам необходим действительный контекст OpenGL, чтобы установить sh соединение с драйвером. Пока оба контекста используют один и тот же драйвер, все должно быть в порядке, поскольку функции - это просто точки входа в DLL этого драйвера.

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

...