Hola. Ahora que queda poco para que llegue la gp2x, se me ha ocurrido que ya que la consola no tiene aceleración 3D, no vendria mal hacer un software que utilizando uno de los procesadores, hiciese de aceleradora.
Como no dispongo de nada (ni tengo la consola, ni tengo las herramientas de programación, por no tener, no he programado siquiera para gp32, a pesar de tenerla...) pues ando trabajando desde visual C haciendo digamos, la funcion de dibujado de triangulos.
Para ello, empleo numeros enteros solo y externamente necsita únicamente de dos funciones: GetPixel y PutPixel.
De momento lo que llevo hecho, es capaz de dibujar una lista de triangulos en los que se detallan los vertices de la siguiente manera:
int x,y,z: // coordenadas espaciales
unsigned color; // color RGBA
int tx,ty; // coordenadas de textura
Las coordenadas de texturas, se suprimen en caso de no emplearse textura (la funcion de dibujado recibe una serie de flags, entre ellos el que indica si se debe utilizar textura.
La funcion de dibujado de triangulos, admite tres modos de operar: lista de triangulos, triagle fan (lista de vertices donde el primero referencia el centro del objeto) y triangle strip (lista de vertices que concatena una serie de triangulos).
Se pueden dibujar triangulos solidos o 'wired'.
La funcion es capaz de dibujar triangulos con o sin texturas, con iluminación gouraud, usando transparencias y translucidez (canal alpha), usando Buffer Z.
El color del triangulo se combina con el color de pixel de la textura, de tal forma que si el valor de un componente supera 0x80 (un componente de RGBA varia desde 0 a 0xff), la luz se mezcla de forma que crea lo que se conoce como iluminacion especular (que el objeto toma el color de la luz). Si el valor es inferior, se produce una atenuacion del color de la textura de forma que se oscurece. De esta forma tan sencilla, se controla la iluminacion.
La translucided se lleva a cabo sin usar un buffer alpha: se toma el color del antiguo pixel de pantalla y se usa el color alpha del pixel a dibujar como factor para mezclar ambos colores.
En la imagen de ejemplo, se pueden ver, arriba, 3 triangulos texturados mediante el metodo fan (si, la textura es una rejilla cutre de 3x3 pixeles

).
Abajo, se aprecia otros tres triangulos dibujados mediante metodo strip y superpuesto, otro triangulo sin textura, en el que se aprecia el efecto translucidez.
Observar en la esquina superior izquierda del triangle strip, el tono azulado que demuestra el uso de luz especular y tambien del gouraud (los pixeles de textura de esa zona, son amarillos y solo cuando nos acercamos a los otros vertices, que tienen luz blanca, el color de la textura va ganando fuerza (observar los degradados)
Si observais el triangulo que se pinta con translucidez, el vertice superior es de color verde, mientras el inferior izquierdo es azul semitransparente y el inferior derecho azul-solido. Se aprecian tanto los degradados de color, como los desgradados translucidos en la imagen.
En fin, esto es lo que llevo hasta ahora hecho y sobre temas como numero de poligonos por segundo, etc, no me pregunteis que no lo se, ya que eso habra que verlo in situ, en su momento.