Уроки OpenGL
OpenGL (англ. «Open Graphics Library») в большинстве случаев рассматривается как API, предоставляющий большой набор функций, которые мы можем использовать для управления графикой и изображениями. Если конкретнее, то OpenGL является спецификацией, разработанной и поддерживаемой Khronos Group.
Независимо от того, пытаетесь ли вы изучить OpenGL в образовательных/карьерных целях или просто ищете новое хобби, эти бесплатные уроки по графическому программированию научат вас основам и всем необходимым деталям работы с OpenGL. Цель этого туториала — показать вам всё, что есть в современном OpenGL, простым для понимания способом с наглядными примерами, а также предоставить бэкграунд для ваших последующих исследований/углублений в эту тему.
Эти уроки нацелены как на тех людей, которые не имеют опыта в графическом программировании, так и на более опытных программистов, которым было бы интересно почитать и систематизировать свои знания. В этом туториале по OpenGL также обсуждаются практические концепции, которые при щепотке дополнительной креативности смогут превратить ваши идеи в настоящие 3D-приложения. Если всё это еще вас не отпугнуло, то я приглашаю вас вместе с собой в это путешествие.
Чему вы научитесь?
Изучение (и использование) OpenGL требует глубоких знаний графического программирования и понимания того, как OpenGL работает «под капотом», чтобы реально извлечь максимальную пользу из вашего предстоящего опыта. Поэтому мы начнем с обсуждения основных графических аспектов, выяснения фактической работы OpenGL для прорисовки пикселей на вашем экране, а также того, как мы можем использовать эти знания для создания каких-то необычных эффектов.
Помимо основного базиса, мы также обсудим множество полезных техник, которые вы сможете использовать для своих приложений, таких как перемещение сцены, создание красивого освещения, загрузка пользовательских объектов из программ моделирования, применение постобработки и многих других. Мы также создадим с вами небольшую игру, применив полученные знания по OpenGL, так что вы действительно прочувствуете, каково это быть графическим разработчиком.
Поскольку OpenGL является графическим API, а не собственно платформой, то для работы с ним потребуется язык программирования. В нашем случае, это язык C++, поэтому вам понадобятся знания по C++. Вам не обязательно быть экспертом по C++, но вы должны уметь написать что-то большее, чем программу «Hello, world!». Для получения дополнительных знаний отлично подойдут уроки по С++ на Ravesli, где каждая тема объясняется отдельным уроком, и куда вы всегда сможете обратиться за детальным разъяснением.
Кроме того, на данных уроках будет использоваться математика (линейная алгебра и геометрия вместе с тригонометрией), которую я также буду стараться объяснять по мере необходимости. Однако, я не являюсь профессиональным математиком, поэтому, хоть мои объяснения и могут быть понятными, они, скорее всего, будут неполными. Поэтому, где это необходимо, я буду указывать хорошие ресурсы, которые объясняют материал более подробно. Не пугайтесь момента с математикой, всё не так уж и страшно 🙂 Большая часть функционала, с которым мы будем работать, не потребует от вас понимания всей подноготной математики, если вы знаете, как её использовать.
Структура уроков
Наш учебный путь разбит на последовательные главы. Каждая из глав содержит уроки, на которых мы подробно будем рассматривать различные концепции. Поскольку уроки являются последовательными, то лучше всего начинать с самого начала, так как на каждом следующем уроке используются концепции, которые рассматривались на предыдущем.
Глоссарий терминов OpenGL
Глава №0. Начало работы с OpenGL
Урок №2. Подготовка к первому проекту OpenGL: настройка GLFW, CMake и GLAD
Урок №3. Наш первый проект в OpenGL — Создание окна
OpenGL и Linux: Установка и настройка Code::Blocks
Урок №4. Рисуем наш первый треугольник в OpenGL
Урок №7. Трансформации в OpenGL
Глава №1. Освещение в OpenGL
Урок №11. Базовое освещение в OpenGL
Урок №12. Материалы объектов в OpenGL
Урок №13. Карты освещения в OpenGL
Глава №2. Загрузка моделей в OpenGL
Глава №3. Продвинутый OpenGL
Урок №19. Тестирование глубины в OpenGL
Урок №20. Тест трафарета в OpenGL
Урок №22. Отсечение граней в OpenGL
Урок №23. Фреймбуферы в OpenGL
Урок №24. Кубические карты в OpenGL
Урок №25. Расширенные методы взаимодействия с данными в OpenGL
Урок №26. Расширенные возможности GLSL в OpenGL
Глава №4. Продвинутое освещение в OpenGL
Урок №30. Продвинутое освещение в OpenGL
Урок №31. Гамма-коррекция в OpenGL
Урок №32. Отображение теней в OpenGL
Урок №33. Всенаправленные карты теней в OpenGL
Урок №34. Карты нормалей в OpenGL
Урок №35. Эффект параллакса в OpenGL
Урок №36. HDR и Тональная Компрессия в OpenGL
Урок №37. Эффект свечения в OpenGL
Глава №5. PBR в OpenGL
Дополнительные уроки
Создание игры «Breakout» на С++/OpenGL
Часть №1: Введение в создание игры «Breakout» на C++/OpenGL
Часть №2: Подготовка к созданию игры «Breakout» на С++/OpenGL
Часть №3: Рендеринг спрайтов в игре «Breakout» на С++/OpenGL
Часть №4: Создание уровней в игре «Breakout» на C++/OpenGL
Часть №5: Добавление мяча в игру «Breakout» на C++/OpenGL
Часть №6: Обнаружение столкновений в игре «Breakout» на C++/OpenGL
Часть №7: Обработка столкновений в игре «Breakout» на C++/OpenGL
Часть №8: Создание системы частиц в игре «Breakout» на C++/OpenGL
Часть №9: Постобработка в игре «Breakout» на C++/OpenGL
Часть №10: Система бонусов в игре «Breakout» на С++/OpenGL
Финал
Адаптированный перевод статей сайта LearnOpenGL.com.