Pues eso, tengo un problema con GX_DrawDone() que se queda colgado ahi el programa y no se porque.
El codigo es de un cargador de modelos en formato wavefront .obj. Parsea y carga perfectamente todos los datos del modelo, creo arrays dinámicos para enviar los datos indexados a la gpu que es mas rápido y ocupa menos memoria... lo hago mas o menos de la siguiente manera.
Esta en ingles a partir de ahora porque puse el mensaje en el foro de tehskeen, pero en realidad creo que aqui hay muchos y buenos programadores, así que aver si alguien encuentra algun fallo
I declare the color array:
u8 modelColor[] ATTRIBUTE_ALIGN(32) =
{
200,200,200,255 //rgba. light grey:
};
I alloc the space for the data:
f32 *modelVerts;
modelVerts = (f32*)memalign(32,sizeof(f32)*vertices*3);
//time to allocate space for the faces indexes.
int *modelFaces;
modelFaces = (int *)memalign(32, sizeof(int)*faces*3);
then i set the vertex descriptors this way:
I use GX_INDEX16 because i use int as indexes.
GX_ClearVtxDesc ();
GX_SetVtxDesc (GX_VA_POS, GX_INDEX16);
GX_SetVtxDesc (GX_VA_CLR0, GX_INDEX16);
GX_SetVtxAttrFmt (GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GX_SetVtxAttrFmt (GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GX_SetArray (GX_VA_POS, modelVerts, 3 * sizeof (f32));
GX_SetArray (GX_VA_CLR0,modelColor, 4 * sizeof (u8));
Then i send data with:
GX_Begin (GX_TRIANGLES, GX_VTXFMT0, vertices);
for(i = 0; i< faces ; i++)
{
GX_Color1x8(0);
GX_Position1x16(modelFaces[(i*3)]);
GX_Position1x16(modelFaces[(i*3)+1]);
GX_Position1x16(modelFaces[(i*3)+2]);
}
GX_End ();
As i only have one color and i want to use it for all the faces... is it better to doit sending direct data ? should i convert the indexes to u16 and stop using ints?