phpMedia 2.0

Hace unos 5 años, hice una extensión para php que permitía hacer aplicaciones multimedia 2D. Por aquel entonces usaba PHP4 y Allegro. Todo el tema gráfico se hacía por software y no permitía conseguir un buen rendimiento. El API no era orientado a objetos y PHP4  estaba mucho más limitado que en la actualidad. El proyecto se alojaba en sourceforge aquí.

Hace un par de semanas, decidí que estaría bien revivir aquello, pero hacerlo mucho mejor: con una interfaz orientada a objetos para PHP5.3 y usando OpenGL con aceleración completa por hardware.

Establecí un proyecto en googlecode. Y me puse a idear el API que tendría. El objetivo es conseguir un API sencillo y útil. Que no sea totalmente versatil, pero que deje hacer bastantes cosas.

Hice un prototipo de interfaz en PHP, y un generador de documentación para googlecode.

Aunque no hice nada, ya tenía mas o menos pensada parte del API.

Esta tarde/noche, me he puesto con ello. Con unos resultados muy prometedores. He tenido muy pocos problemas y ha ido todo como esperaba o incluso mejor.

Como resultado he sacado una primera versión usable, para PHP5.3. En la página del proyecto está.

Lo que he hecho:

  • Soporte básico de teclado. Las teclas principales. Detectar pulsaciones o detectar si está pulsada o levantada la tecla.
  • Inicialización gráfica (ventana o pantalla completa)
  • Clase Bitmap (bastante avanzada). Permite crear nuevos bitmaps, cargar desde archivos o desde cadenas. Permite hacer recortes, clonar réplicas.

Lo que falta:

  • Mejorar el soporte de teclado.
  • Soporte para ratón.
  • Soporte para gamepad.
  • Todo el tema del audio.
  • Shaders.

Ejemplo de prueba + archivos necesarios:

Para probar el ejemplo, bajar todos los archivos. Y ejecutar el archivo test.bat. Teclas del cursor para desplazar la imagen. W/S para acercar/alejar la imagen. A/D para rotar la imagen. ESC para salir del ejemplo.

Página del proyecto: http://code.google.com/p/phpmedia/

Leer más...

PHP: ¿serialize o json_encode?

A partir de PHP 5.2, existen dos nuevas funciones llamadas json_encode y json_decode que permiten serializar variables con contenidos variables en php. La implementación está hecha en C, así que su rendimiento es bastante conveniente.

JSON (JavaScript Object Notation) es un formato de intercambio de datos. Y tiene la peculiaridad de que la cadena generada es siempre una expresión válida en javascript. Además la cadena resultante es muy compacta, y se puede modificar con facilidad. En la actualidad ya es un formato ampliamente usado y soportado de manera oficial en muchos lenguajes de programación.

Leer más...

PHP: echo vs printf vs strtr/str_(i)replace vs preg_replace_callback

Introducción:

En muchas ocasiones querremos separar el texto de nuestras páginas web de la programación propiamente dicho. En ocasiones será para poder localizar nuestra página (tenerla en diferentes idiomas), otras simplemente por comodidad.

Dichos textos, generalmente estarán mezclados con contenido dinámico que se tendrá que reemplazar.

Supongamos que tenemos una página con categorías y entradas de algún tipo y queremos mostrar en el título el camino a una subcategoría, y la cantidad de subcategorías y de elementos que tiene.

Podríamos hacer algo similar a esto usando echo:

Leer más...

PHP 5.1 y spl_autoload_register

Desde PHP 5.1 disponemos de spl_autoload_register (desde PHP 5.0 podemos definir la función __autoload).

En PHP 5 si se define una función __autoload, ésta se llamará cada vez que se intente acceder a una clase que no exista. Tanto para llamar a un método estático como para la instanciación de un nuevo objeto de dicha clase.

Esto nos permite cargar código implícitamente y olvidarnos de incluir dependencias continuamente y permitiéndonos tener un lazy loading muy lightweight sin tener que cargar cosas que no nos interesan.

Leer más...

Suscribirse via RSS