[Wii] AYUDA CON BLEND EN GX

Tengo un sprite que por si solo se dibuja con transparencia variable.

void enableTextureForBlend(){
GX_SetVtxDesc (GX_VA_TEX0, GX_DIRECT);
GX_SetTevOp(GX_TEVSTAGE0, GX_MODULATE);
GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0);
}

void SparkSprite::drawFrame(float fr){

// Aquí obvio el cálculo de anchos altos y coordenadas de mapeado
// suponemos un cálculo de alpha que viene dado por fr, del tipo alpha+=0x05;

enableTextureForBlend();

GX_LoadTexObj(&sprites,GX_TEXMAP0);
despY = getMoveFunctY(score);

GX_Begin(GX_QUADS, GX_VTXFMT0, 4);

GX_Position2f32(x, y);
GX_Color4u8(0xff,0xff,0xff, alpha);
GX_TexCoord2f32(0.0,0.0);

GX_Position2f32(x+width, y);
GX_Color4u8(0xff,0xff,0xff, alpha);
GX_TexCoord2f32(1.0,0.0);

GX_Position2f32(x+width, y+height);
GX_Color4u8(0xff,0xff,0xff, alpha);
GX_TexCoord2f32(1.0,1.0);

GX_Position2f32(x, y+height);
GX_Color4u8(0xff,0xff,0xff, alpha);
GX_TexCoord2f32(0.0,1.0);

GX_End();
}

Esto funciona, pero a la hora de crear otro sprite con otra textura diferente.

void drawWin(float frame)
{
int width = 272;
int height = 80;
int x = (getScreenWidth()-width)/2;
int y = (getScreenHeight()-height)/2;
//u8 alpha = 0xff;

enableTextureForBlend();

GX_LoadTexObj(&winImage,GX_TEXMAP0);

GX_Begin(GX_QUADS, GX_VTXFMT0, 4);

GX_Position2f32(x, y);
//GX_Color4u8(0xff,0xff,0xff, 0xff);
GX_TexCoord2f32(0.0,0.0);

GX_Position2f32(x+width, y);
GX_Color4u8(0xff,0xff,0xff, 0xff);
GX_TexCoord2f32(1.0,0.0);

GX_Position2f32(x+width, y+height);
GX_Color4u8(0xff,0xff,0xff, 0xff);
GX_TexCoord2f32(1.0,1.0);

GX_Position2f32(x, y+height);
GX_Color4u8(0xff,0xff,0xff, 0xff);
GX_TexCoord2f32(0.0,1.0);

GX_End();
}

Da un acojo-error, y todo se viene abajo a la hora de aplicar transparencia a la imagen.

No tengo mucha idea de esto, ya que estoy empezando, pero puede ser porque tengo que usar registros distintos para cada textura en el método enableTextureForBlend() ?

Muchas gracias por leer.
0 respuestas