Предисловие: О чем это вообще?

GameDev, 3D, cross-platform, C++, Visual Studio, Android, Windows, OpenGL ES. Этот блог сложился как практически пошаговая инструкция (обучалка) по написанию собственной игры с нуля. Написать свою игру – моя давняя мечта. И теперь я знаю как это сделать правильно. Есть в голове несколько идей что бы это могло бы быть, окончательно пока еще не определился. […]

Глава 37.2. GitHub

Для уверенности, что мы с Вами точно на одной странице, давайте ссинхронизируем наши проекты. Полный текущий репозиторий Проекта можно сгрузить с https://github.com/bkantemir/_wg37 Windows solution, x86: _wg37-main\a997modeler\p_windows\p_windows.sln Android solution, ARM64: _wg37-main\a997modeler\p_android\p_android.sln Важные изменения: Чтобы отвязать проект от каталога C:\CPP, все пути в настройках проекта переведены в относительную форму. Как ..\..\engine вместо C:\CPP\engine. Чтобы облегчить репозиторий, из […]

Глава 37. Оптимизация мешей

Модель полностью готова, но остался еще 1 вопрос: Сейчас модель состоит из 316 вертексов и 144 треугольников (432 индекса), что не так уж и много по сравнению с 3D редакторами. Но все-таки, откуда СТОЛЬКО-то?? Ну, сама коробка например: 6 сторон, по 4 вертекса каждая = 24 вертекса 12 ребер, по 4 вертекса каждое = 48 […]

Глава 36. “Стеклянный” эффект

Модель почти готова. Не хватает только: Слюдяной пленки и Акцизной марки Тут нам даже не придется писать новых шейдеров. Для пленки мы возьмем наш “зеркальный” шейдер (как для позолоченных принтов) с белым шумом в качестве главной текстуры (uTex0) и “странслируем” ее в полупрозрачную 8×1 текстуру glass01.bmp (uTex3), имитирующую стеклянное отражение. Это просто белая прозрачная текстура […]

Глава 35. “Проволочный” шейдер

Здесь я собираюсь добавить золотую ленточку (пломбу). Это будет линия, последовательность точек вместо обычного набора треугольников. Для этого потребуются: Набор новых тагов в ModelLoader Новая переменная lineWidth в классе Material В DrawJob будет нужно перекалибровывать lineWidth в зависимости от дистанции Дополнительный функционал в шейдерах И, конечно, новый model descriptor 1. Скопируем нижеследующий код в Текстовый […]

OpenGL ES vs Vulkan vs Angle

Конечно, меня мучали сомнения по поводу выбора OpenGL ES. Действительно ли он прям ТАКОЙ кросс-платформенный? Может, надо было выбрать Vulkan? Или что-то еще? Готов ли я пожертвовать поддержкой Apple ради такого выбора? Теперь у меня есть и ответы: Vulkan Не будем углубляться здесь насколько он хорош (а он и правда хорош): Скорострельный Поддерживает много-ядерность ОЧЕНЬ […]

Видео. DaVinci Resolve

Настал момент, когда мне понадобилось в моем блоге поделиться не просто картинкой, а видео. Задача разбивается на несколько шагов: 1. Записать (захватить) видео Допустим, у меня на экране анимация, которую я собираюсь записать (захватить). Windows 10 предлагает Capture утилиту для записи дисплея. Это часть Xbox Game Bar-а. Для запуска – нажмите Windows+G. Или можно открыть […]

Visual Studio: the file contains a virus?!

С какого-то момента начал получать от Windows Defender-а такие сообщения: Microsoft Visual Studio: Unable to start program ‘C:\CPP\…\w.exe’. Operation did not complete successfully because the file contains a virus or potentially unwanted software. Типа, не могу запустить программу, потому что она содержит вирус или потенциально нежелательный код. По-началу меня это несильно расстраивало, потому что перезапуск […]

Глава 34. “Тюнинг” Материала

Мы ВСЕ ЕЩЕ пытаемся “нарисовать” стык (щель) между пачкой и крышкой как небольшую normal map приложенную к части существующей текстурированной поверхности. На данный момент у нас есть вырезанные фрагменты с их “родными” собственными Материалами. В предыдущей главе мы просто заменили их на зеленый Phong. На самом же деле нам нужны родные Material-ы, только с добавленной normal map. […]

Глава 33. Пересечение полигонов

На всякий случай: мы все еще пытаемся “нарисовать” стык (щель) между пачкой и крышкой, как небольшую normal map приложенную к части существующей текстурированной поверхности. Как-то так: В предыдущей главе мы смогли пометить и переместить “marked vertices/triangles group“. Теперь нам надо выбрать одну (в этом примере – “box_right”), клонировать ее, развернуть и сдвинуть лицом к нам: Затем – […]

Глава 32. “Помеченные” группы вертексов

Теперь я хочу “нарисовать” стык (щель) между пачкой и крышкой, как normal map приложенную к части существующей поверхности, НЕ ко всей поверхности, и НЕ к VirtualShape как мы делали раньше. Это потребует нескольких новых концепций. Windows 1. Запускаем VS, открываем C:\CPP\a997modeler\p_windows\p_windows.sln. Первая из новых концепций – помеченные группы вертексов/треугольников, чтобы потом мы могли обратиться к какой-то […]