Я хотел бы начать изучать OpenGL, использовать его в программном обеспечении, написанном на языке C ++. Естественное, что я делаю, когда пытаюсь узнать что-то новое, — это приобретение соответствующей литературы и онлайн-уроков.
Однако с OpenGL я застрял. В различной литературе и учебных пособиях, которые я проверил, почти сразу упоминаются такие термины, как:
Несмотря на то, что я проверил сайты этих инструментов или записи в вики, я все еще не понимаю таких вещей, как: что они на самом деле имеют отношение к OpenGL, почему используют один, а не другой, что у них общего, в чем различия. .. И, наверное, самое главное, как мне найти то, что мне (не) нужно?
Поэтому я очень хотел бы услышать объяснение на эту тему. Ссылка на правильное онлайн-чтение также хороша. Спасибо.
Открытая графическая библиотека (OpenGL) кросс-языковой, кросс-платформенный интерфейс прикладного программирования (API) для рендеринга 2D и 3D векторной графики. Как таковой, он предоставляет только средства для рисования базовых примитивов (таких как точки, линии, треугольники), но не обеспечивает высокоуровневую функциональность. Давайте проработаем ваш список:
«Неофициальный OpenGL SDK«
Это просто набор библиотек, предлагающих некоторые (более или менее) часто необходимые функции, такие как загрузка файлов изображений или работа с трехмерными объектами, или вспомогательные библиотеки для создания контекстов OpenGL и управления ими (в него входят некоторые другие упомянутые вами библиотеки, мы подходим к этому.) Я бы не рекомендовал использовать это SDK как новичок, но просто изучите основы и тщательно выберите дополнительные библиотеки, которые вы хотите использовать.
OpenGL Shading Language (сокращенно: GLSL или GLslang) — это язык затенения высокого уровня, основанный на синтаксисе языка программирования C.
Это не отдельный инструмент, а центральная концепция современного OpenGL. Он понадобится вам для написания ваших шейдеров (которые требуются в современном GL). Это то, что вы обязательно должны изучить, но компилятор для этого языка поставляется с вашей реализацией GL, так что вам не нужно ничего устанавливать отдельно.
FreeGLUT, GLFW, SFLM
Как я уже сказал, OpenGL определяется независимо от платформы. Для создания контекста OpenGL и его «подключения» к окнам (или к любым «рисованным объектам», присутствующим на платформе) по-прежнему нужен API для конкретной платформы. OpenGL даже не имеет понятия «окна», и, как таковое, также не имеет средств для обработки входных событий, определяющих изменение размеров окна. Эти библиотеки реализуют оболочки для этих API привязки GL для конкретной платформы, а также для управления окнами и событиями, так что вы можете просто создать контекст OpenGL и подходящее окно, не заботясь обо всех этих деталях платформы. FreeGLUT и GLFW достаточно сфокусированы на предоставлении простой инфраструктуры для разработки OpenGL, в то время как SFML является более общей мультимедийной инфраструктурой (также поддерживающей такие вещи, как вывод звука) и способной создавать контексты и окна OpenGL. Другими такими библиотеками могут быть SDL (который часто используется для игр) или Qt, который поддерживает виджеты OpenGL.
GLEW это сокращение от «Wrangler расширения OpenGL».
Это Библиотека загрузки OpenGL. OpenGL является расширяемым
API. Таким образом, функции могут присутствовать или отсутствовать на компьютере, на котором выполняется ваше приложение. Кроме того, так как OpenGL определяется на некоторых платформах, библиотеки гарантированно экспортируют только определенный набор функций. Если вам нужны функции более новых версий, вы должны использовать механизм расширения. Это означает, что вместо прямой связи функции во время ссылки, вы должны запросить указатели функций в _runtime_
чтобы получить доступ к этим функциям. Чтобы упростить этот процесс, существуют такие библиотеки загрузчиков, как GLEW. С GLEW все, что вам нужно сделать, это позвонить glewInit()
и затем вы можете использовать любую функцию GL по своему усмотрению (при условии, что она поддерживается реализацией), забывая обо всех этих деталях механизма расширения.
Что вам действительно нужно в этом списке: GLSL, но это не инструмент. Другое дело для удобства, но я настоятельно рекомендую использовать некоторую независимую от платформы библиотеку управления окнами и контекстом (GLFW довольно легок, но трудно сказать, что вам нужно. Для изучения OpenGL GLFW, безусловно, хороший выбор.) а также некоторые загрузчики GL, такие как GLEW.
Других решений пока нет …