Представлен LDL — мост между эпохами в мире мультимедийных библиотек

LDL (Little Directmedia Layer) — это не просто кроссплатформенная библиотека, предлагающая единое ядро для работы с графикой и вводом, поверх которого реализованы совместимые API популярных библиотек: SDL1, SDL2, SDL3 и GLUT. Библиотека позволяет запускать современный код на устаревших системах, таких как Windows 95, и наоборот — сохранять работоспособность legacy-проектов на современном железе.

Основная идея и философия

Главная концепция LDL — быть «мостом между эпохами», а не очередной библиотекой-конкурентом для SDL.

За проектом стоит глубокая философия сохранения цифрового наследия и уважения к истории IT. Как отмечает автор, это «погружение в сагу человеческой мысли, изобретательности и невероятной изобретательности», где каждая строка кода — это часть интеллектуального наследия.

Реализация концепта: портирование Sauerbraten Cube 2

Для демонстрации работоспособности библиотеки в реальных условиях автор ведет работу по портированию игры Sauerbraten Cube 2 на базе LDL. Этот шутер от первого лица с открытым исходным кодом, изначально написанный с использованием SDL, служит идеальным полигоном для проверки совместимости и производительности библиотеки.

Ключевые характеристики

Возможности и текущий статус

Проект уже обладает полнофункциональной базой для создания широкого спектра приложений.

Реализовано:

В разработке:

Призыв к сообществу: проект ищет контрибьюторов

На текущий момент автор проекта является единственным активным разработчиком. Для ускорения развития LDL и реализации всего заложенного потенциала проект открыт для контрибьюторов. Приветствуется помощь в самых разных направлениях:

«Мы открыты для всех! Готовы обсуждать любые вопросы, предложения и идеи», — отмечает автор.

Почему это важно для разработчиков?

  1. Для поддержки legacy-проектов: Запустите код, написанный 20 лет назад, на современной системе без правок.

  2. Для новых проектов: Пишите на современном SDL3, но с гарантией совместимости со старыми системами. «Одна кодовая база — везде!»

  3. Для энтузиастов и ретро программирования: Изучайте компьютерную графику и игры прошлого, используя современные инструменты.

  4. Для образовательных целей: Используйте знакомый GLUT API, который теперь поддерживается на современных компиляторах.

Образовательная ценность: учебник по эволюции API

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

Ссылки на проект:

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

@JordanCpp
13.11.2025 19:43 UTC
Первоисточник

Комментарии

@MasterMentor
13.11.2025 15:03 UTC
+1

Проект действительно "амбициозный". +

PS А не сдуетесь? Будет ещё одна 100500-я графическая библиотека призванная "заменить".

@JordanCpp
13.11.2025 15:10 UTC
+7

Думаю, что нет. Мне данный проект интересен как возможность пощупать старые ос, компиляторы. Возможность оптимизировать код под очень древние цпу.

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

@alex_02
13.11.2025 17:16 UTC
0

Йоу! Проект суперский! Успехов в дальнейшем)

@JordanCpp
13.11.2025 17:41 UTC
+1

Спасибо за поддержку.

@Jijiki
14.11.2025 04:22 UTC
0

как по мне сдл3, и не рейлиб и не просто окно, что-то между, пойди собери

@Jijiki
14.11.2025 06:24 UTC
0
Скрытый текст
несколько лет прошло всё теже проблемы только на 3 версии, надо какие-то флаги искать, что-то в LD_ прописывать, где конфиг, и свой драйвер еще подставляет, при этом это как тонкая настройка, но спорно вобщем
несколько лет прошло всё теже проблемы только на 3 версии, надо какие-то флаги искать, что-то в LD_ прописывать, где конфиг, и свой драйвер еще подставляет, при этом это как тонкая настройка, но спорно вобщем

сделать репарент, не трогать драйвер, не знаю ничего про поддержки на других платформах, я перестал понимать эту библиотеку

14.11.2025 07:02 UTC
0

Это Линукс? Протестирую получше, мог что то сломать.

14.11.2025 09:17 UTC
0

да линукс калькулейт, конечно её(SDL3) пересобрать и перенастроить можно, тут ситуация в 3 версии в деталях, например картинку надо перевернуть(bmp), тоесть кто-то воспользуется стб, оп потерялась консистентность, потом выбор драйвера, так получается кор библиотека из-за таких решений ни туда ни сюда, еще к тому же, частичные реализации, получается, пишешь текстовый редактор, к примеру, надо всего открыть окно и глифы, но библиотека имеет всё, и в тот же момент по деталям, это всё детально придётся переписывать, с голым фритайп2, окном, и стб, это странно

вот первое броское, окно не скруглилось я пока не гуглил почему, второе там уже движок текстовый внутри как я понимаю(в ттф например), опять же зачем, тоесть выбор такой странный

сдл2 логичнее получается, да там тоже картинка перевернута и драйвер, но зато нет частичных реализаций

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

14.11.2025 15:04 UTC
0

я про саму библиотеку сдл3, щас кути летит и гном летит, а на сдл3 сидишь весь в конфигах, и там гпу еще, это так просто боль...

SDL_SetHint(SDL_HINT_X11_WINDOW_TYPE, "1");

на скрине мне этот хинт помог

14.11.2025 07:07 UTC
0

Как раз переписываю тесты массово. Что бы после сборки запускались на любой платформе.

@LanskoyGames
18.11.2025 05:14 UTC
0

Интересный проект!

Кстати, почему нет упоминаний про SFML?

@JordanCpp
18.11.2025 11:22 UTC
0

Я с SFML мало работал. Но библиотека серьезная.

@kemlinbot
29.11.2025 20:25 UTC
0

Опять вы сударь за своё ))

Я вот думаю что не правильно, в пакетном рисовании спрайтов (для ogl3) делать лишние телодвижения. Зачем это всё:

float ps = 1.0f / (float)_textureSize;

quad.data[0] = (float)dstPos.x;
quad.data[1] = float(dstSize.y + dstPos.y);

Может будет быстрее передавать в вершинный шейдер целые числа, раз оно всё в целых, а там уже преобразовывать и приводить к размеру текстуры?


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

@JordanCpp
01.12.2025 11:45 UTC
0

Спасибо, за коммент. Я сейчас провожу тотальный рефакторинг. И данный код будет переписан + будет несколько версий с int и float. Я давно намеревался почистить код. Если сейчас посмотрите на репу, каждый файл изменен.

Может будет быстрее передавать в вершинный шейдер целые числа, раз оно всё в целых, а там уже преобразовывать и приводить к размеру текстуры?

Да согласен. Такой вариант останется только для GL1, GL3 будет иметь современную реализацию.



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

Сейчас в текущем состоянии да, но хочу улучшить.