Przedstawiam Państwu pierwszą wersję biblioteki multimedialnej, którą opracowałem. Mała warstwa DirectMedia, w skrócie LDL.
Biblioteka została napisana w standardzie C++ 98, co pozwala na jej kompilację począwszy od Visual C++ 6.0. Kod rozpowszechniany jest na warunkach licencji Boost Software License 1.0. Jednak biblioteka nie ogranicza programistów w wyborze standardu języka C++; Programista może wykorzystać dowolny, współczesny standard językowy. Wyznaję filozofię downgrade'u – polega ona na codziennym użytkowaniu starych urządzeń i oprogramowania, kiedy firmy nie wspierają swoich „przestarzałych” systemów operacyjnych czy urządzeń, zwiększając wymagania systemowe z każdą nową wersją swojego produktu lub przestając wspierać dane urządzenie. Miliardy urządzeń na całym świecie co sekundę przetwarzają miliardy instrukcji niezoptymalizowanego kodu.
W tym roku wygłosiłem wykład na konferencji C++ 2023 „W stronę przeszłości, czyli opracowywanie ram dla Windows 95 w 2023 roku".
Moim projektem chcę udowodnić, że stary sprzęt może być nadal użyteczny i że za wcześnie jest, aby skazywać go na złom. Stare technologie, podejścia i sprzęt mają w sobie coś fascynującego, a jednocześnie stanowią wyzwanie dla nowych bibliotek i programów.
Na samym początku procesu tworzenia nie miałem pojęcia, że taka biblioteka w ogóle istnieje. Jednak w trakcie praktycznej realizacji prototypu, dodając linijka po linijce do fundamentu przyszłej biblioteki, przekonałem się o możliwości jego stworzenia i praktycznego zastosowania.
Podsumowując powyższe, można napisać szybkie programy, trzeba tylko skorzystać z wiedzy starożytnych.
Funkcje biblioteki:
- wsparcie Linux Debian 3 i wyższe (zapewniony jest język ojczysty);
- wsparcie Windows 95 - Windows 11;
- proste API do pracy z grafiką 2D;
- ładowanie wielu formatów graficznych (bmp, png, tga, jpg);
- wieloplatformowy interfejs API dla zdarzeń systemu Windows i systemu operacyjnego;
- Do sprzętowego przyspieszania grafiki używany jest OpenGL 1.2.
- OpenGL 3.3, obsługa przetwarzania grafiki jest możliwa tylko na poziomie procesora, jeżeli nie ma akceleracji sprzętowej;
- renderer może być wybierany dynamicznie podczas ładowania aplikacji;
- Jedno API dla wszystkich systemów - napisz raz i kompiluj wszędzie!
- reprodukcja dźwięku;
- łączenie dynamiczne i statyczne.
Przyszłe plany:
- odtwarzanie strumieniowe dźwięku;
- wyjście tekstowe ze wsparciem biblioteki freetype;
- dodatkowe renderery Direct3D 9, 10, 11;
- API do pracy ze strumieniami;
- wbudowane wsparcie API do pracy z siecią;
- Przenoszenie frameworka na inne platformy: Android, IOS, MacOs.
Linki:
- Repozytorium projektu z instrukcjami montażu
- Przykłady programów
- Prezentacja raportu
- Poprzednia dyskusja na temat LORE
Źródło: linux.org.ru
