JordanCpp

JordanCpp

Пикабушник
Дата рождения: 2 февраля
107 рейтинг 1 подписчик 0 подписок 1 пост 0 в горячем
8

Первый релиз LDL 0.1 — маленькая библиотека с большой душой. Один API на 30 лет компьютерной истории

Рад представить первый публичный релиз библиотеки LDL.

Тема на Old-Games.ru
Тема нв Linux.org.ru
Тема на Gamedev.ru

Что такое LDL?

LDL (Little Directmedia Layer) это не просто кроссплатформенная библиотека, а мост между разными эпохами разработки. Она позволяет писать код, который одинаково хорошо работает на Windows 95 и Windows 11, на старых ядрах Linux и современных дистрибутивах, на FreeBSD 3.0 и свежих релизах.

Библиотека написана на чистом C89 (ANSI C), что обеспечивает максимальную переносимость даже на самые экзотические компиляторы и платформы.

Раньше я писал LDL на C++98, что уже давало хорошую портабельность. Но со временем я пересмотрел подход. Во-первых, я полностью перешёл на C89, что дало максимальную совместимость со старыми компиляторами и платформами, включая DOS, Windows 95, Solaris и даже PlayStation 1. Во-вторых, я отказался от идеи выпустить сразу версию 1.0 со всей функциональностью. Теперь релизы выходят итеративно: сначала окна, события и графика, потом 2D-рендер, затем звук и шрифты. Так проект не зависает в офлайне на годы, а постепенно развивается на глазах у сообщества.

Да, ещё одна важная часть стратегии, бэкенды. LDL не пытается заменить SDL, SFML или GLFW, а становится надстройкой поверх них. В планах добавить бэкенды для:

  • SDL 1.2

  • SDL 2.x

  • SDL 3.x

  • SFML

  • GLFW

Это значит, что приложение на LDL можно собрать поверх любой из этих библиотек без изменения кода. API остаётся единым, а внизу можно подставить любую поддерживаемую систему окон и ввода.

Такой подход решает несколько задач. Во-первых, если нативной реализации под какую-то платформу ещё нет, можно временно использовать бэкенд через существующую библиотеку. Во-вторых, разработчики, уже знакомые с SDL или GLFW, могут попробовать LDL без полной замены своего инструментария. В-третьих, появляется возможность использовать возможности этих библиотек (например, звук или шрифты в SDL) раньше, чем они будут реализованы в нативном LDL.

Возможности текущей версии:

Окна - Создание, изменение размера, закрытие
События - Клавиатура, мышь, ресайз, фокус
Клавиатура - Полная карта клавиш
Мышь - Движение, клики, колёсико
OpenGL 1.0–4.6 От immediate mode до compute shaders

Поддерживаемые платформы:

Windows - Версии: 95, 98, ME, 2000, XP, Vista, 7, 8, 10, 11
Linux - Версии: Ядро 2.0 – 6.x (1996+)
FreeBSD - Версии: 3.0 – 14.x (1998+)

Планы на версию 0.2

Добавить 2D-рендера в LDL, создать единый интерфейс для рисования спрайтов, линий, прямоугольников, который работает одинаково на любом железе. Разработчик не думает, что у него под капотом: современный Vulkan, старый OpenGL или вообще только процессор без видеокарты. LDL сам выбирает оптимальный бэкенд.

На современных системах рендер идёт через Vulkan или OpenGL с аппаратным ускорением. На ретро-железе включается программный растеризатор. Визуальный результат при этом остаётся одинаковым: один и тот же код даёт одну и ту же картинку везде.

API будет простым и интуитивным: загрузка спрайта, отрисовка по координатам, цветовые эффекты. Всё в рамках единого вызова, без возни с низкоуровневыми деталями.

Цель: чтобы код на LDL жил десятилетиями от винтажных консолей и ПК из 90-х до ультрасовременных рабочих станций без переписывания и без сюрпризов. То есть сделать 2D часть такой же переносимой и долговечной, как и всю остальную библиотеку.

Философия проекта

Мы стоим на плечах гигантов, чьи имена часто забываем, но чья работа продолжает формировать наш мир каждый день.

LDL - это попытка сохранить связь между поколениями разработчиков. Библиотека не пытается заменить существующие решения (SDL, GLFW), а дополняет их, предоставляя единый API для платформ, которые обычно остаются за бортом современной разработки.

LDL создан не просто как библиотека. Это попытка сохранить то особенное чувство, которое возникает при работе с техникой прошлых лет.

В мерцании электронно-лучевой трубки старого монитора. В ощутимом тепле процессора без кулера, который трудится над каждым тактом. В том, как инженеры 90-х выжимали невозможное из килобайтов памяти и мегагерц частоты.

Сегодня у нас терабайты и терафлопсы, но мы потеряли что-то важное, искусство делать многое из малого. LDL возвращает этот подход. Каждая строчка библиотеки написана с мыслью о том, что она может работать на Pentium 66 МГц с 8 МБ RAM.

Почему это важно?

Потому что современный софт живёт 3–5 лет. Мы выбрасываем работающее железо не потому, что оно сломалось, а потому, что программы стали слишком тяжёлыми и ленивыми. LDL - это протест против запланированного устаревания. Это код, который не требует замены оборудования каждые три года.

Один код. Тридцать лет компьютерной истории. И очарование, которое чувствуют те, кто застал эпоху, когда программирование было настоящим искусством выживания в ограничениях.

OpenGL 1.2

OpenGL 2.1

OpenGL 3.3

Показать полностью 9
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества