Уроки по OpenGL

Независимо от того, пытаетесь ли вы изучить OpenGL в образовательных/карьерных целях или просто ищете новое хобби, эти бесплатные уроки по графическому программированию научат вас основам и всем необходимым деталям работы с OpenGL. Цель этого туториала — показать вам всё, что есть в современном OpenGL, простым для понимания способом с наглядными примерами, а также предоставить бэкграунд для ваших последующих исследований/углублений в эту тему.

Эти уроки нацелены как на тех людей, которые не имеют опыта в графическом программировании, так и на более опытных программистов, которым было бы интересно почитать и систематизировать свои знания. В этом туториале по OpenGL также обсуждаются практические концепции, которые при щепотке дополнительной креативности смогут превратить ваши идеи в настоящие 3D-приложения. Если всё это ещё вас не отпугнуло, то я вас приглашаю вместе с собой в это путешествие.

Чему вы научитесь?

Основной фокус этих уроков уделяется именно изучению современного OpenGL. Изучение (и использование) современного OpenGL требует глубоких знаний графического программирования и понятия того, как OpenGL работает под капотом, чтобы реально извлечь максимальную пользу из вашего предстоящего опыта. Поэтому мы начнём с обсуждения основных графических аспектов и того, как OpenGL фактически рисует пиксели на вашем экране, и то, как мы можем использовать эти знания для создания каких-то необычных эффектов.

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

Поскольку OpenGL является графическим API, а не, собственно, платформой, то для работы с ним потребуется язык программирования. В нашем случае, это язык C++, поэтому вам понадобятся знания по C++. Тем не менее, я всё равно буду стараться объяснить большинство используемых понятий, включая продвинутые темы C++ настолько, насколько это возможно и уместно. Вам не обязательно быть экспертом в C++, но вы должны уметь написать что-то большее, чем программу «Hello, world!». Для получения этих знаний отлично подойдут уроки по С++ на Ravesli, где каждая тема объясняется отдельным уроком и куда вы всегда сможете обратиться за детальным разъяснением.

Также в этих уроках будет использоваться математика (линейная алгебра и геометрия вместе с тригонометрией), которую я также буду стараться объяснять по мере необходимости. Однако, я не являюсь профессиональным математиком, поэтому, хоть мои объяснения и могут быть понятными, они, скорее всего, будут неполными. Поэтому, где это необходимо, я буду указывать хорошие ресурсы, которые объясняют материал более полно. Не пугайтесь момента с математикой, всё не так уж и страшно 🙂 Большая часть функционала, с которым мы будем работать, не потребует от вас понимания всей подноготной математики, если вы знаете, как её использовать.

Структура уроков

Наш учебный путь разбит на последовательные главы. Каждая из глав содержит уроки, в которых мы подробно будем рассматривать различные концепции. Поскольку уроки являются последовательными, то лучше всего начинать с самого начала, так как в каждом последующем уроке используются концепции, которые рассматривались в предыдущем.

Удачи!

Глава №0. Начало работы с OpenGL

Урок №1. Введение в OpenGL

Урок №2. Подготовка к первому проекту OpenGL: настройка GLFW, CMake и GLAD

Урок №3. Наш первый проект в OpenGL — Создание окна

OpenGL и Linux: Установка и настройка Code::Blocks

Урок №4. Рисуем наш первый треугольник в OpenGL

Урок №5. Шейдеры в OpenGL

Урок №6. Текстуры в OpenGL

Урок №7. Трансформации в OpenGL

Урок №8. Системы координат в OpenGL

Урок №9. Камера в OpenGL

Глава №1. Освещение в OpenGL

Урок №10. Цвета в OpenGL

Урок №11. Базовое освещение в OpenGL

Урок №12. Материалы объектов в OpenGL

Урок №13. Карты освещения в OpenGL

Урок №14. Источники света в OpenGL

Урок №15. Множественные источники света в OpenGL

Глава №2. Загрузка моделей в OpenGL

Урок №16. Библиотека импорта 3D-моделей Assimp в OpenGL

Урок №17. Mesh в OpenGL

Урок №18. Загрузка моделей в OpenGL

Глава №3. Продвинутый OpenGL

Урок №19. Тестирование глубины в OpenGL

Урок №20. Тест трафарета в OpenGL

Урок №21. Смешивание в OpenGL

Урок №22. Отсечение граней в OpenGL

Урок №23. Фреймбуферы в OpenGL

Урок №24. Кубические карты в OpenGL

Урок №25. Расширенные методы взаимодействия с данными в OpenGL

Урок №26. Расширенные возможности GLSL в OpenGL

Урок №27. Геометрические шейдеры в OpenGL

Урок №28. Инстансинг в OpenGL

Урок №29. Сглаживание в OpenGL

Глава №4. Продвинутое освещение в OpenGL

Урок №30. Продвинутое освещение в OpenGL

Урок №31. Гамма-коррекция в OpenGL

Урок №32. Отображение теней в OpenGL

Урок №33. Всенаправленные карты теней в OpenGL

Урок №34. Карта нормалей в OpenGL

Урок №35. Параллакс в OpenGL

Урок №36. HDR в OpenGL

Урок №37. Эффект свечения в OpenGL

Урок №38. Отложенное затенение в OpenGL

Урок №39. SSAO в OpenGL

Глава №5. PBR в OpenGL

Урок №40. Физически корректный рендеринг (PBR) в OpenGL

Глоссарий терминов в OpenGL

Словарь терминов в OpenGL

Адаптированный перевод с LearnOpenGL.com.