Hola a todos.
Estoy aprendiendo a programar en gc y me he encontrado con un problema que no soy capaz de entender.
Estoy intentando hacer un programa que permita desplazarse por un mundo virtual tipo Quake.
Para dibujar el suelo utilizo repetidas llamadas a una función que me dibuja una baldosa.
Si dibujo algunas baldosas individuales no hay problema, pero si dibujo más un determinado número de ellas (no muchas) el programa se cuelga.
Alguien puede ayudarme.
Abajo añado un extracto de mi programa.
¿Alguien tiene idea de lo que me está ocurriendo?
void DibujaBaldosa(float x, float z, GXTexObj *texture)
#define tBaldosa 1.0f
{
//set number of textures to generate
GX_SetNumTexGens(1);
GX_SetTevOp(GX_TEVSTAGE0,GX_BLEND);
GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GX_LoadTexObj(texture, GX_TEXMAP0);
guMtxIdentity(model);
guMtxTransApply(model, model, x,ySuelo,z);
guMtxConcat(view,model,modelview);
// load the modelview matrix into matrix memory
GX_LoadPosMtxImm(modelview, GX_PNMTX0);
guMtxInverse(modelview,mvi);
guMtxTranspose(mvi,modelview);
GX_LoadNrmMtxImm(modelview, GX_PNMTX0);
GX_Begin(GX_QUADS, GX_VTXFMT0, 4);
// Draw the floor
GX_Position3f32(tBaldosa, 0, -tBaldosa); // Top Right Of The Quad (Right)
GX_TexCoord2f32(10.0f,10.0f);
GX_Position3f32(-tBaldosa, 0, -tBaldosa); // Top Left Of The Quad (Right)
GX_TexCoord2f32(0.0f,10.0f);
GX_Position3f32(-tBaldosa, 0, tBaldosa); // Bottom Left Of The Quad (Right)
GX_TexCoord2f32(0.0f,0.0f);
GX_Position3f32(+tBaldosa, 0, tBaldosa); // Bottom Right Of The Quad (Right)
GX_TexCoord2f32(10.0f,0.0f);
GX_End(); // Done Drawing The Quad
}
void Dibujasuelo (GXTexObj *texture)
{
f32 x;
f32 z;
for (x = -4.0f; x < 6.0f;x = x + 2.0f)
for (z = -18.0f; z <= -6.0f; z = z + 2.0f)
DibujaBaldosa(x, z, texture);
}