Vi presento la mia prima versione della biblioteca multimediale che ho sviluppato Little DirectMedia Layer, abbreviato in LDL.
La libreria è scritta secondo lo standard C++ 98, il che permette di compilarla a partire da Visual C++ 6.0. Il codice è distribuito sotto i termini della Boost Software License 1.0. Tuttavia, la libreria non limita gli sviluppatori nella scelta dello standard del linguaggio C++, l'programmatori possono utilizzare qualsiasi standard moderno del linguaggio. Mi attengo alla filosofia del downgrade – l'uso di dispositivi e software obsoleti nella vita di tutti i giorni, quando le aziende non supportano i propri sistemi operativi o dispositivi "superati", aumentando i requisiti di sistema con ogni nuova versione del prodotto o interrompendo il supporto del dispositivo. Milioni di dispositivi in tutto il mondo elaborano ogni secondo miliardi di istruzioni di codice non ottimizzato.
Quest'anno ho partecipato alla conferenza C++ 2023 con una presentazione «Avanti nel passato, o Sviluppiamo un framework per Windows 95 nel 2023».
Con il mio progetto voglio dimostrare che l'hardware vecchio può ancora essere utile e non dovrebbe essere scartato prematuramente. C'è qualcosa di affascinante nelle vecchie tecnologie, nei metodi e nei dispositivi, oltre a essere una sfida per le nuove librerie e programmi.
All'inizio del processo di sviluppo, non avrei mai immaginato che questa libreria fosse possibile. Ma durante l'implementazione pratica del prototipo, aggiungendo riga dopo riga alla base della futura libreria, ho convinto me stesso della possibilità della sua creazione e applicazione pratica.
In sintesi, è possibile scrivere programmi veloci, basta sfruttare le conoscenze antiche.
Caratteristiche della libreria:
- supporto per Linux Debian 3 e successivi (fornita una build nativa);
- supporto per Windows 95 – Windows 11;
- API semplice per lavorare con la grafica 2D;
- caricamento di vari formati grafici (bmp, png, tga, jpg);
- API multipiattaforma sopra finestre e eventi del sistema operativo;
- per l'accelerazione hardware della grafica si utilizza OpenGL 1.2 e
- OpenGL 3.3, è presente supporto per l'elaborazione grafica solamente sulla CPU, in assenza di accelerazione hardware;
- il rendering può essere scelto dinamicamente durante il caricamento dell'applicazione;
- un'unica API per tutti i sistemi – scrivi una volta e compila ovunque!
- riproduzione audio;
- linkaggio dinamico e statico.
Piani futuri:
- riproduzione audio in streaming;
- output di testo con supporto per la libreria freetype;
- renderer aggiuntivi Direct3D 9, 10, 11;
- API per gestione dei thread;
- supporto integrato per API per la rete;
- porting del framework su altre piattaforme: Android, IOS, MacOs.
Link:
- Repository del progetto con descrizione per la compilazione
- Esempi di programmi
- Presentazione della relazione
- Discussione precedente su LOR
Fonte: linux.org.ru
