Когда-то вывод любой графики на микроконтроллере был серьёзным испытанием, а о трёхмерных сценах речи вообще не шло. Современные чипы, однако, стали заметно мощнее, и на них уже можно реализовывать вполне полноценную графическую магию — в том числе в трёх измерениях. Хороший пример такой возможности — проект Jet.
Что представляет собой Jet
Библиотеку разработал программист, известный под псевдонимом CubeCoders. Jet — компактный 3D-растеризатор, созданный специально для современных чипов вроде ESP32 и STM32. У него нет ни одной сторонней зависимости, сам код занимает совсем немного места, а написан он на C++17 с прицелом на платформы с ограниченным объёмом памяти. Растеризатор работает полностью программно, использует только целочисленную арифметику и построен вокруг 16-битного цвета RGB565 — это должно упростить работу с распространёнными дисплеями вроде ST7796 и ILI9488, подключаемыми по интерфейсу SPI.
Производительность на практике
- на плате ESP32-S3 библиотека отрисовывает около 650 треугольников на экране (после отсечения невидимых граней) с частотой 60 кадров в секунду на дисплее разрешением 480×320;
- при снижении частоты до 30 кадров в секунду сцена может содержать уже около 1300 треугольников;
- по словам автора, по уровню трёхмерной графики результат находится где-то между консолями Sega 32X и Sega Saturn — неплохой показатель для микроконтроллера стоимостью до 20 долларов.
Продемонстрировать возможности библиотеки помогает демо-ролик в стиле гоночной аркады Wipeout — он наглядно показывает, что даже дешёвый одноплатный контроллер способен выводить плавную и узнаваемую трёхмерную сцену.
Разумеется, ждать от следующего проекта на микроконтроллере графики уровня современных игр не стоит. Но если нужна лёгкая ретро-графика в трёх измерениях для очередной самоделки на базе ESP32, Jet вполне может справиться с такой задачей — код проекта распространяется в открытом доступе, так что библиотеку можно собрать под свою плату и попробовать на собственном наборе дисплеев.










