Библиотека OpenGL32

Мне не хватает библиотеки opengl32 (более подробно: mingw32 w64 отсутствует библиотека OpenGL32). У меня есть несколько вопросов, связанных с этой библиотекой:

  1. Зачем мне нужна статическая библиотека opengl32 (у меня есть .dll)?
  2. Почему производители видеокарт не предоставляют эту библиотеку?
  3. Кто должен это предоставить?
  4. Есть ли исходный код библиотеки opengl32?
  5. Зачем мне GLEW или другие реализации библиотеки GL (чтобы использовать все возможности OpenGL), если есть opengl32? Почему opengl32 не может иметь всю необходимую реализацию GL?

1

Решение

  1. Это не статическая библиотека, это библиотека для динамического связывания с DLL.
  2. Потому что это часть ОС, более или менее. Символы, экспортируемые из OpenGL32.dll, являются стандартными (определенный набор gl... функции) и для Microsoft (wgl по крайней мере). Публично известные не отличаются между продавцами.
  3. Microsoft предоставляет его вместе со своими компиляторами. Любой другой поставщик компилятора также должен, так как библиотеки могут быть в некоторой степени специфичными для компилятора.
  4. Mesa — это реализация OpenGL с открытым исходным кодом, так что ближе всего вы получите.
  5. Вы не можете, вы можете получить строки и указатели на функции вручную, это очень утомительно. GLEW и др. Выполняют большинство проверок и инициализацию за вас. Они не делают ничего, что вы можете сделать напрямую с OpenGL32.dll, но они делают жизнь намного проще.
3

Другие решения

Зачем мне нужна статическая библиотека opengl32 (у меня есть .dll)?

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

Обратите внимание, что в других ОС, кроме Windows, «DLL» также предоставляет таблицы символов.

Почему производители видеокарт не предоставляют эту библиотеку?

Поскольку библиотека является частью интерфейса ОС к системе драйверов

Кто должен это предоставить?

DLL: поставщик ОС.
Библиотека таблицы символов: поставщик компилятора.

Есть ли исходный код библиотеки opengl32?

Сам OpenGL — это всего лишь спецификация. На вашем компьютере есть реализация и интерфейс. Интерфейс является частью ОС. Следовательно, в ОС с закрытым исходным кодом нет доступного исходного кода, но в ОС с открытым исходным кодом есть.

Зачем мне GLEW или другие реализации библиотеки GL (чтобы использовать все возможности OpenGL), если есть opengl32?

opengl32.dll — это просто интерфейс с системой драйверов. Этот интерфейс должен быть наименьшим общим знаменателем возможностей OpenGL, чтобы через общий интерфейс можно было предлагать широкий спектр версий и возможностей OpenGL. Однако вы также хотите иметь доступ к новым и новейшим функциям, для которых существует механизм расширения.

Почему opengl32 не может иметь всю необходимую реализацию GL?

opengl32.dll является частью операционной системы, и если бы она была частью ОС, то для каждой новой версии OpenGL требовалось бы обновление ОС. Это на самом деле ситуация с MacOS X.

Также OpenGL реализация является частью драйвера, а не DLL.

7

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector