Представляю Вашему вниманию разработанную мной первую версию мультимедийной библиотеки Little DirectMedia Layer, сокращённо LDL.
Библиотека написана на С++ 98 стандарта, что позволяет компилировать ее начиная с Visual C++ 6.0. Код распространяется на условиях Boost Software License 1.0. Но библиотека не ограничивает программистов в выборе стандарта языка C++, программист может использовать любой современный стандарт языка. Я придерживаюсь философии downgrade — это использование старых устройств и софта в повседневной жизни, когда компании не поддерживают свои же «устаревшие» операционные системы или устройства, увеличивая с каждой новой версией своего продукта системные требования, или прекращают поддержку девайса. Миллиарды устройств по всему миру ежесекундно перемалывают миллиарды инструкций неоптимизированного кода.
В этом году я выступил на конференции С++ 2023 с докладом «Вперед в прошлое, или Разрабатываем фреймворк под Windows 95 в 2023 году».
Своим проектом я хочу доказать, что старое железо еще может приносить пользу и его рано списывать в утиль. Есть что-то чарующее в старых технологиях, подходах и железках, а еще это вызов новым библиотекам и программам.
В самом начале процесса разработки я и не предполагал, что данная библиотека вообще возможна. Но при практической реализации прототипа, добавляя строчку за строчкой в фундамент будущей библиотеки, убеждался в возможности ее создания и практическом применении.
Резюмируя вышесказанное, возможно писать быстрые программы, нужно просто воспользоваться знаниями древних.
Возможности библиотеки:
поддержка Linux Debian 3 и выше (обеспечена нативная сборка);
поддержка Windows 95 — Windows 11;
простое API для работы с 2D графикой;
загрузка множества графических форматов (bmp, png, tga, jpg);
кроссплатформенное API над окнами и событиями ОС;
для аппаратного ускорения графики используется OpenGL 1.2 и OpenGL 3.3, присутствует поддержка обработки графики только на ЦПУ, если отсутствует аппаратное ускорение;
рендер может быть выбран динамически при загрузке приложения;
единое API для всех систем — напиши один раз и компилируй везде!
воспроизведение звука;
динамическая и статическая линковка.
Планы на будущее:
поточное воспроизведение звука;
вывод текста с поддержкой библиотеки freetype;
дополнительные рендеры Direct3D 9, 10, 11;
API для работы с потоками;
встроенная поддержка API для работы с сетью;
портирование фреймворка на другие платформы: Android, IOS, MacOs.
Ссылки:
Репозиторий проекта с описанием по сборке
Примеры программ
Презентация доклада
Предыдущее обсуждение на ЛОРе