Les presento la primera versión de la biblioteca multimedia que he desarrollado Little DirectMedia Layer, abreviado como LDL.
La biblioteca está escrita en C++ estándar 98, lo que permite compilarla desde Visual C++ 6.0. El código se distribuye bajo los términos de la Licencia de Software Boost 1.0. Sin embargo, la biblioteca no limita a los programadores en la elección del estándar del lenguaje C++, el programador puede usar cualquier estándar moderno del lenguaje. Me adhiero a la filosofía del downgrade: el uso de dispositivos y software antiguos en la vida cotidiana, cuando las empresas dejan de ofrecer soporte para sus propios 'sistemas operativos obsoletos' o dispositivos, aumentando con cada nueva versión de su producto los requisitos del sistema, o cesando el soporte del dispositivo. Miles de millones de dispositivos en todo el mundo procesan miles de millones de instrucciones de código no optimizado cada segundo.
Este año participé en la conferencia C++ 2023 con la presentación «Adelante en el pasado, o Desarrollando un marco para Windows 95 en 2023».
Con mi proyecto quiero demostrar que el hardware antiguo aún puede ser útil y que es prematuro descartarlo. Hay algo cautivador en las viejas tecnologías, enfoques y dispositivos, además, esto representa un desafío para las nuevas bibliotecas y programas.
Al comienzo del proceso de desarrollo, ni siquiera imaginaba que esta biblioteca fuera posible. Pero al implementar prácticamente el prototipo, añadiendo línea por línea a la base de la futura biblioteca, me convencí de la viabilidad de su creación y aplicación práctica.
Resumiendo lo anterior, es posible escribir programas rápidos, solo hace falta aprovechar el conocimiento de lo antiguo.
Funciones de la biblioteca:
- soporte para Linux Debian 3 y superior (se proporciona una compilación nativa);
- soporte para Windows 95 a Windows 11;
- API simple para trabajar con gráficos 2D;
- carga de múltiples formatos gráficos (bmp, png, tga, jpg);
- API multiplataforma sobre ventanas y eventos del sistema operativo;
- para la aceleración gráfica por hardware se utiliza OpenGL 1.2 y
- OpenGL 3.3, existe soporte para el procesamiento gráfico solo en la CPU si no hay aceleración por hardware;
- el renderizado se puede seleccionar dinámicamente al cargar la aplicación;
- una única API para todos los sistemas: escribe una vez y compila en todas partes!
- reproducción de sonido;
- enlace dinámico y estático.
Planes para el futuro:
- reproducción de sonido en streaming;
- salida de texto con soporte para la biblioteca freetype;
- renders adicionales de Direct3D 9, 10, 11;
- API para trabajar con hilos;
- soporte incorporado de API para trabajar con redes;
- portación del marco a otras plataformas: Android, iOS, MacOS.
Enlaces:
- Repositorio del proyecto con descripción de construcción
- Ejemplos de programas
- Presentación del informe
- Discusión previa en LOR
Fuente: linux.org.ru
