Представляю Вашему вниманию разработанную мной первую версию мультимедийной библиотеки 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.
Ссылки:
- Репозиторий проекта с описанием по сборке
- Примеры программ
- Презентация доклада
- Предыдущее обсуждение на ЛОРе
>>> Подробности