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