Představuji vám svou první verzi multimediální knihovny Little DirectMedia Layer, zkráceně LDL.
Knihovna je napsaná v standardu C++ 98, což umožňuje její kompilaci od Visual C++ 6.0. Kód je šířen pod podmínkami Boost Software License 1.0. Knihovna však neomezuje programátory v volbě standardu jazyka C++, programátor může používat jakýkoliv moderní standard jazyka. Držím se filozofie downgrade – využívání starého hardware a softwaru v každodenním životě, když společnosti nepodporují své 'zastaralé' operační systémy nebo zařízení, zvyšují s každou novou verzí svého produktu systémové požadavky, nebo přestávají podporovat zařízení. Miliardy zařízení po celém světě každou sekundu zpracovávají miliardy instrukcí neoptimalizovaného kódu.
Tento rok jsem vystoupil na konferenci C++ 2023 s přednáškou „Vpřed do minulosti, nebo Vyvíjíme framework pro Windows 95 v roce 2023“.
Svým projektem chci dokázat, že starý hardware může stále být užitečný a není jej třeba hned vyřazovat. Na starých technologiích, přístupech a zařízeních je něco fascinujícího, a navíc je to výzva vůči novým knihovnám a programům.
Na začátku vývojového procesu jsem ani nepředpokládal, že by tato knihovna mohla existovat. Ale při praktické realizaci prototypu, přidávající řádek za řádkem do základů budoucí knihovny, jsem se utvrdil v možnosti jejího vzniku a praktického využití.
Shrnuto, je možné psát rychlé programy, stačí využít znalosti starých.
Funkce knihovny:
- podpora Linux Debian 3 a vyšších (zajištěna nativní sestavení);
- podpora Windows 95 – Windows 11;
- jednoduché API pro práci s 2D grafikou;
- načítání mnoha grafických formátů (bmp, png, tga, jpg);
- křížová platformní API nad okny a událostmi OS;
- pro hardwarové akcelerace grafiky se používá OpenGL 1.2 a
- OpenGL 3.3, existuje podpora pro zpracování grafiky pouze na CPU, pokud chybí hardwarová akcelerace;
- renderování může být vybráno dynamicky při načítání aplikace;
- jednotné API pro všechny systémy – napiš jednou a kompiluj všude!
- přehrávání zvuku;
- dynamické a statické linkování.
Plány do budoucna:
- streamování zvuku;
- výstup textu s podporou knihovny freetype;
- dodatečné rendery Direct3D 9, 10, 11;
- API pro práci s proudy;
- vstavaná podpora API pro práci se sítí;
- portování frameworku na jiné platformy: Android, iOS, MacOS.
Odkazy:
- Repозитář projektu s popisem sestavení
- Příklady programů
- Prezentace zprávy
- Předchozí diskuse na LORu
Zdroj: linux.org.ru
