Przedstawiam Państwu pierwszą wersję opracowanej przeze mnie biblioteki multimedialnej Little DirectMedia Layer, w skrócie LDL.
Biblioteka została napisana w standardzie C++ 98, co pozwala na jej kompilację od Visual C++ 6.0. Kod jest udostępniany na warunkach Boost Software License 1.0. Jednak biblioteka nie ogranicza programistów w wyborze standardu języka C++, programista może używać dowolnego nowoczesnego standardu tego języka. Trzymam się filozofii downgrade — polega to na wykorzystywaniu starych urządzeń i oprogramowania w codziennym życiu, kiedy firmy nie wspierają swoich „przestarzałych” systemów operacyjnych lub urządzeń, zwiększając z każdą nową wersją swojego produktu wymagania systemowe, lub przestają wspierać daną jednostkę. Miliony urządzeń na całym świecie co sekundę przetwarzają miliardy instrukcji nieoptymalizowanego kodu.
W tym roku wystąpiłem na konferencji C++ 2023 z wykładem „Wstecz w przeszłość, czyli Tworzymy framework pod Windows 95 w 2023 roku”.
Moim projektem chcę udowodnić, że stare sprzęty wciąż mogą być użyteczne i nie powinny być jeszcze skreślane. Jest coś urzekającego w starych technologiach, podejściu i urządzeniach, a to także wyzwanie dla nowych bibliotek i programów.
Na samym początku procesu tworzenia nie przypuszczałem, że ta biblioteka jest w ogóle możliwa. Jednak przy praktycznej realizacji prototypu, dodając linię po linii do fundamentu przyszłej biblioteki, przekonywałem się o jej możliwości stworzenia i praktycznym zastosowaniu.
Podsumowując, możliwe jest pisanie szybkich programów, trzeba tylko skorzystać z wiedzy przeszłości.
Możliwości biblioteki:
- wsparcie dla Linux Debian 3 i wyżej (zapewniona natywna kompilacja);
- wsparcie Windows 95 — Windows 11;
- proste API do pracy z grafiką 2D;
- ładowanie wielu formatów graficznych (bmp, png, tga, jpg);
- cross-platformowe API nad oknami i zdarzeniami OS;
- dla przyspieszenia sprzętowego grafiki używane jest OpenGL 1.2 i
- OpenGL 3.3, istnieje wsparcie dla przetwarzania grafiki tylko na CPU, gdy brak jest przyspieszenia sprzętowego;
- renderer może być wybierany dynamicznie przy ładowaniu aplikacji;
- jedno API dla wszystkich systemów — napisz raz i kompiluj wszędzie!
- odtwarzanie dźwięku;
- dynamiczne i statyczne linkowanie.
Plany na przyszłość:
- przepływowe odtwarzanie dźwięku;
- wyświetlanie tekstu z obsługą biblioteki freetype;
- dodatkowe rendery Direct3D 9, 10, 11;
- API do pracy z wątkami;
- wbudowane wsparcie API do pracy z siecią;
- portowanie frameworka na inne platformy: Android, IOS, MacOs.
Linki:
- Repozytorium projektu z opisem kompilacji
- Przykłady programów
- Prezentacja raportu
- Poprzednia dyskusja na LORze
Źródło: linux.org.ru
