Что такое GLEW и как оно работает?

15

Я ищу объяснение для начинающих . Официальное объяснение на сайте слишком короткое и приводит меня к большему количеству вопросов, чем к ответам:


  • Что такое GLEW?

Страница разработчика GLEW гласит:

OpenGL Extension Wrangler Library (GLEW) - это межплатформенная библиотека загрузки расширений C / C ++ с открытым исходным кодом . GLEW предоставляет эффективные механизмы времени выполнения для определения того, какие расширения OpenGL поддерживаются на целевой платформе.


  • Но что такое библиотека загрузки расширений?

Вики OpenGL говорит

Библиотека загрузки OpenGL - это библиотека, которая загружает указатели на функции OpenGL во время выполнения, как ядро, так и расширения .


  • Что значит загружать указатели на функции OpenGL ?

  • Что такое расширение ?

  • Что это значит под « ядром и расширениями »?

XY6
источник

Ответы:

20

Большинство компиляторов предоставляют вам заголовок OpenGL, который обеспечивает поддержку OpenGL 1.1, но большинство функций, представленных в этой версии OpenGL, давно устарели и не имеют важных функций, таких как шейдеры и объекты буфера вершин. GLEW - это просто заголовок (есть исходный файл, который также должен быть скомпилирован, но вы можете просто включить его в свой проект), который обеспечивает более новую функциональность OpenGL.

Что это значит под расширением?

Вот ссылка с OpenGL.org о них. Это просто дополнительные функции для OpenGL, которые не являются частью OpenGL. Они предоставляют функциональные возможности, которые могут быть полезны, но вы не можете гарантировать, что они будут работать на каждом компьютере, поскольку они не являются частью ядра OpenGL.

Что значит загружать указатели на функции OpenGL?

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

Вы должны вызвать функцию (например, GetProcAddress, но это зависит от платформы, для которой вы разрабатываете), чтобы получить указатель функции во время выполнения от драйвера для каждой функции OpenGL.

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

Что это значит под «ядром и расширениями»?

Это означает, что он предоставляет функции OpenGL, а также расширения OpenGL.

LiquidFeline
источник