Apresento a vocês a primeira versão da biblioteca multimídia que desenvolvi. Little DirectMedia Layer, abreviado LDL.
A biblioteca foi escrita em C++ padrão 98, permitindo sua compilação a partir do Visual C++ 6.0. O código é distribuído sob a Licença de Software Boost 1.0. No entanto, a biblioteca não limita os programadores na escolha do padrão da linguagem C++, podendo usar qualquer padrão moderno. Eu sigo a filosofia downgrade — que é a utilização de dispositivos e softwares antigos na vida cotidiana, quando as empresas não suportam seus próprios sistemas operacionais ou dispositivos 'ultrapassados', aumentando os requisitos do sistema com cada nova versão de seu produto ou interrompendo o suporte a dispositivos. Bilhões de dispositivos em todo o mundo processam bilhões de instruções de código não otimizado a cada segundo.
Este ano, fiz uma apresentação na conferência C++ 2023 com o tema “Avançando para o passado, ou Desenvolvendo um framework para Windows 95 em 2023”.
Com meu projeto, quero provar que hardware antigo ainda pode ser útil e não deve ser descartado. Há algo encantador nas tecnologias, abordagens e hardwares antigos, além de ser um desafio para novas bibliotecas e programas.
No início do processo de desenvolvimento, nem imaginava que essa biblioteca seria possível. Mas ao implementar praticamente o protótipo, adicionando linha por linha à base da futura biblioteca, fui convencido da viabilidade de sua criação e aplicação prática.
Resumindo, é possível escrever programas rápidos, basta utilizar o conhecimento dos antigos.
Recursos da biblioteca:
- suporte ao Linux Debian 3 e superior (com compilação nativa garantida);
- suporte ao Windows 95 — Windows 11;
- API simples para trabalhar com gráficos 2D;
- carregamento de múltiplos formatos gráficos (bmp, png, tga, jpg);
- API multiplataforma sobre janelas e eventos do SO;
- para aceleração de hardware gráfico utiliza OpenGL 1.2 e
- OpenGL 3.3, com suporte para processamento gráfico somente na CPU, caso não haja aceleração de hardware;
- o renderizador pode ser escolhido dinamicamente ao carregar o aplicativo;
- uma API unificada para todos os sistemas — escreva uma vez e compile em qualquer lugar!
- reprodução de som;
- linkagem dinâmica e estática.
Planos para o futuro:
- reprodução de som em streaming;
- renderização de texto com suporte à biblioteca freetype;
- renders adicionais Direct3D 9, 10, 11;
- API para trabalhar com streams;
- suporte embutido para API de rede;
- portabilidade do framework para outras plataformas: Android, iOS, MacOS.
Links:
- Repositório do projeto com a descrição de como compilar
- Exemplos de programas
- Apresentação da palestra
- Discussão anterior no LOR
Fonte: linux.org.ru
