← На главную

ssloy создал 500-строчный рендерер на C++, раскрывающий OpenGL/Vulkan

23.07.2026 14:17 · hackernews

Автор под ником ssloy подготовил учебный материал, который на пальцах объясняет устройство OpenGL, Vulkan, Metal и DirectX. Идея в том, чтобы написать их упрощённый клон с нуля на C++ без единой сторонней библиотеки — получается софтверный рендерер примерно на 500 строк кода. Студентам обычно хватает 10–20 часов, чтобы запустить собственную версию.

На вход подаётся триангулированная 3D-модель с текстурами, на выходе — готовая картинка. Никакого графического интерфейса, программа просто генерирует файл. Чтобы не зависеть от внешних библиотек, ученикам даётся только один класс для работы с форматом TGA — он поддерживает RGB, RGBA и оттенки серого и считается одним из самых простых. Всё, что этот класс умеет кроме загрузки и сохранения, — выставить цвет одного пикселя. Никаких встроенных рисовалок отрезков или треугольников нет, их предстоит написать вручную — так наглядно вскрывается внутренняя логика графического конвейера.

Автор выложил стартовый шаблон: в main.cpp определяются несколько констант цвета (структура TGAColor хранит компоненты в порядке BGRA), и в небольшом буфере 64×64 устанавливаются три белых пикселя, после чего результат уходит в framebuffer.tga. Полный код лежит на github в репозитории ssloy/tinyrenderer, а начальную заготовку можно забрать отдельно. Сборка элементарная: cmake, make и запуск бинарника с obj-файлами diablo3_pose и floor. Готовое изображение сохраняется туда же, в framebuffer.tga. В статье мелькают и более симпатичные примеры, отрендеренные этим же инструментом.

Материал сознательно не учит писать приложения под GPU — он показывает, как GPU-конвейер работает под капотом. Автор убеждён, что без такого понимания невозможно создавать по-настоящему эффективный код для трёхмерных библиотек, и поэтому даёт не готовое решение, а фундамент, который каждый должен достроить самостоятельно.

Читать оригинал →