PDA

Ver la versión completa : Ayuda con las capas YUV de la minilib



juanvvc
19/05/2008, 12:00
Estoy intentando dibujar sobre una capa YUV de 32 bits y otra RGB de 8 con la minilib B. No estoy seguro si tengo que configurar la minilib a 8 ó 32. Puck en su AlexKidd lo configura a 8 así que debe estar bien. El caso es que este código debería sacar una pantalla en rojo, o al menos una pantalla intermitente en rojo... pero solo saco negro, tanto si pongo la minilib a 8, 16 ó 32. ¿Alguien puede ayudarme para que funcione este programa tan simple? ¡Muchas gracias!



#include "minimal.h"

int main(){
int i, j;
unsigned long color;
gp2x_init(1000, 32, 44100, 16, 1, 60, 1);
gp2x_video_YUV_setparts(0, -1, -1, -1, 319, 239);
gp2x_video_YUV_setscaling(0,320,240);
color=gp2x_video_YUV_color(255,0, 0);
for(j=0; j<240; j++)
for(i=0; i<320; i++)
gp2x_video_YUV[0].screen32[i+j*320]=color;
gp2x_video_YUV_flip(0);
while(1){
if(gp2x_joystick_read() & GP2X_START) break;
gp2x_video_YUV_flip(0);
}
gp2x_deinit();
}

void gp2x_sound_frame(void *blah, void * stream, int len){}

Puck2099
19/05/2008, 12:37
En mi código tengo la YUV a 16 o 32 bits (no recuerdo bien), pero no a 8...

Creo que el problema que tienes es que no has definido un color transparente para la capa RGB y pintado ésta con él, por eso al estar la capa YUV "más abajo" te la tapa la RGB.

Mírate sobretodo el tema del YUV en mi selector de roms que seguro que queda más claro que en el propio emulador.

Saludos

juanvvc
19/05/2008, 12:54
Pues eso digo, la YUV utiliza screen32 pero la minilib se inicia con 8 bits y las RGB utilizan screen8, que es como tienes en tu emulador... &#161;pero no me sale! Probar&#233; lo del color de transparencia, pero en este ejemplo no estoy pintando ninguna capa RGB.

Puck2099
19/05/2008, 12:57
Pues eso digo, la YUV utiliza screen32 pero la minilib se inicia con 8 bits y las RGB utilizan screen8, que es como tienes en tu emulador... ¡pero no me sale! Probaré lo del color de transparencia, pero en este ejemplo no estoy pintando ninguna capa RGB.

Es que si no recuerdo mal siempre se pinta la RGB por defecto.

De todos modos, las minilib tenían bugs con la YUV que corregí con la ayuda de rlyeh en la versión que tengo implementada en mi emulador, así que échale un vistazo no sea que estés usando una versión no corregida...

juanvvc
19/05/2008, 13:49
Por supuesto ten&#237;as raz&#243;n, Puck, y hab&#237;a que definir el color transparente de la capa RGB superior que es la que se estaba pintando en negro. Al archivo que he puesto arriba le faltan estas tres l&#237;neas justo despu&#233;s de gp2x_init()



gp2x_video_RGB_setwindows(0x10,-1,-1,-1,319,239);
gp2x_video_RGB_setcolorkey(0, 0, 0);
memset(gp2x_video_RGB[0].screen8, 0, 320*240);


&#161;Much&#237;simas gracias!