GameDev, 3D, cross-platform, C++, Visual Studio, Android, Windows, OpenGL ES. Этот блог сложился как практически пошаговая инструкция (обучалка) по написанию собственной игры с нуля. Написать свою игру – моя давняя мечта. И теперь я знаю как это сделать правильно. Есть в голове несколько идей что бы это могло бы быть, окончательно пока еще не определился. […]
Глава 39. Сложные формы (с GitHub-ом)
Следующий шаг – это заменить модели на что-то более актуальное чем просто квадратики. Например, на это: Я выбрал именно эту модель за ее изысканно гнутые формы. Если чо, это 1935 Deusenberg SSJ Speedster, масштаб 1:64. Для этого понадобится расширить функционал ModelBuilder-а и ModelLoader-а. Также понадобятся новые XML таги в дескрипторах чтобы этот функционал задействовать. Здесь […]
Глава 38. Иерархичные модели
Теперь можно подумать и о более сложных моделях, состоящих из нескольких элементов с индивидуальным поведением. Например – машина, где корпус был бы корневым элементом, а колеса – дочерними. Для обоих (корпус и колесо) понадобятся собственные отдельные дескрипторы и классы, обсуживающие их поведение. 1. В Windows File Explorer-е откроем наш корневой (CPP) каталог, сделаем копию a997modeler […]
Глава 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 Не будем углубляться здесь насколько он хорош (а он и правда хорош): Однако меня больше интересует насколько он кросс-платформенный. Оказывается, не совсем. А главное, он даже НЕ кросс-GPU !! Он GPU-specific, так что Vulkan программы для AMD и для, […]
Видео. 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. […]