Глава 10. Простой шейдер

Наконец, шейдеры! Начнем с самого простого, просто заливка сплошным цветом, который мы передадим шейдеру в качестве инпута вместе с данными повехности (в нашем примере – треугольника). Шейдеры пишутся на GLSL (OpenGL Shading Language с синтаксисом похожим на C). GLSL исполняется на граф-карте. Исполняемая шейдер-программа состоит из 2-х шейдеров: Vertex Shader, который обрабатывает данные вешин (включая […]

Глава 9. Сохраняем Android assets в файлы

Хотя мы можем использовать Android assets и напрямую (как мы только-что сделали в последнем примере). всё же надо помнить, что “ассеты” – это НЕ файлы в обычном понимании. Разница в том, что:: К Ассетам нельзя доступиться обычными файловыми инструментами. Только через специальный Assets интерфейс. Они все read-only. Мы не сможем их модифицировать или добавлять новые […]

Глава 8. Внешние файлы данных, Android assets

Идея та же что и в предыдущей главе – расположить файлы данных в пределах досягаемости от экзешника. Правда, в случае Андроида мы имеем дело не с экзешником, а с APK. Кроме того, нам надо доставить файлы не просто в другой каталог, а на другое устройство. Единственный (известный мне) “транспорт” – это специальный каталог “assets“, который […]

Глава 7. Внешние файлы данных, Windows

Теперь мы готовы приступить к написанию реальных (практически используемых) шейдеров. Сейчас у нас есть 2 (1 vertex и 1 fragment), встроенных (hard-coded) в код. Понятно, что не лучшее решение, но ради простоты примера – вполне оправданное. Мы же, в свою очередь, предпочтем держать их за пределами экзешника. 1. В Windows File Explorer-е (не в VS), […]

Глава 6. Cross-platform, Android

Теперь попробуем запустить TheGame класс на Android-е. 1. Запускаем Visual Studio, открываем C:\CPP\a999hello\p_android\p_android.sln solution. 2. Под p_android.NativeActivity проектом добавим “xTheGame” фильтр: Right-click на p_android.NativeActivity project -> Add -> New Filter. Name – xTheGame Под xTheGame добавим Existing Item: Right-click на xTheGame -> Add -> Existing Item, Идем на C:\CPP\a999hello Файлы – TheGame.cpp и TheGame.h Add. […]

Глава 5. Cross-platform, Windows

В этой главе мы попробуем “препарировать” наш GLFW пример с треугольником. Мы выведем “игровой” код (который готовит и рисует треугольник) в отдельный класс, который потом попробуем использовать и на Android-е. Чтобы код был platform-independent (независимым) мы отделим его от platform-specific вызовов. Весь environment-related код, типа создание окна, инициализация GL-а, и т.д., мы оставим в main.cpp […]

Глава 4. Printf в OpenGL ES

Теперь, имея 2 OpenGL ES проекта на разных платформах, можно прикинуть что в них общего и в чем разница. Общая структура: Создание GL context-а, инициализация данных, главный цикл с покадровым rendering-ом, выход. GL команды (Слава Богу!) выглядят тоже похоже. Разница в инициализации окна и GL-a, в GL-related инклюдах (gl/egl на Android-е и glfw/glad в Windows-е). […]

Глава 3. Hello Windows

Visual Studio, Windows, C++, OpenGL ES, GLFW, GLAD Запуск OpenGL ES на PC не такой прямолинейный как на Android-е поскольку GL ES предназначен для мобильников, а НЕ для десктопов. Но варианты есть. Издатели OpenGL-а настоятельно рекомендуют использовать window toolkit (GLFW) и OpenGL loading libraries (GLAD). Значит, давайте их сгрузим. 1. Сперва зарезервируем для них место.В […]

Глава 2. Hello Android

Visual Studio, Android, Native activity, C++, OpenGL ES “Родные” языки для Андроида – это Java и Kotlin. Native activity же позволит писать код для Android-а на C++. Кроме того, Visual Studio’s Native activity шаблон включает инициализацию OpenGL ES-а. 1. Запускаем Visual Studio. Выбираем “Create a new project“. В меню шаблонов выбираем Android, потом “Native Activity […]

Глава 1. Установка Visual Studio

1. Ищем в Гугле “Visual Studio download”. Переходим на https://visualstudio.microsoft.com Выбираем Download Visual Studio -> Community 2022 (или который там текущий). Сгружаем и запускаем инсталлер. 2. На странице Workloads выбираем “Desktop development with C++”. Дополнительные компоненты (которые в правой панели) пока не нужны. Если понадобятся, сможем установить их потом. 3. Поскольку целимся и на Android […]