Anuncios Google

Binarios 3D a NitroFs

Hola, esoty hacinedo un juego en 3D y he conseguido, mediante binarios en la carpeta data, y con el glcallist, poner un modelo 3D en la DS.

 

Pero, como son muchos xD, no me valdran 4mb de RAM.

 

Y aqui mi cuestion, es posible usar esos binarios 3D en NitroFs? O FAT? Esque si no no me caben todos T-T

 

sepero que podais ayudarme

 

Salu2!


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de kNightFox

Cargas el archivo a un buffer

Cargas el archivo a un buffer en ram, le pasas el puntero a GlCallList y cuando no uses el objeto borras el buffer.

Imagen de Andresmargar

He prbado...

he probado eso y no va, esta es mi funcion...

//Carga Mapas 3D desde NitroFs(INCLUIR CABECERA DEL MODELO)
void Load3dModel(const u32* file){
	const u32* model;                      //puntero del archivo    
	char modelname[32];              //para el archivo
	sprintf(modelname, "%s/%d.bin", NF_ROOTFOLDER, file);
	model=fopen(modelname,"rb");          //lo abre
	glCallList((u32*)model);          //y lo enlaza al cargador
}

Y me sale este error...

File: C:\devkitpro\libnds\nds\arm9\video_gl.h

LINE: 750

condition: list !=NULL

gcallList received a NULL display list pointer

 

WTF?


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Imagen de kNightFox

Normal.... no has asignado

Normal.... no has asignado memoria la buffer... Y si lees archivos, casi mejor declaralo como char* o u8*...

Imagen de Andresmargar

He usado...

void Load3dModel(const char* file){
	FILE* model;                      //puntero del archivo    
	char modelname[32];              //para el archivo
	sprintf(modelname, "%s/%d.bin", NF_ROOTFOLDER, file);
	model=fopen(modelname,"rb");          //lo abre
                u32 model_size; //tamaño del archivo
///////////////////////////////
//Obtiene el tamaño
///////////////////////////////
fseek(model, 0, SEEK_END);
model_size=ftell(model);
rewind(model);
/////////////////////////////
//Carga el modelo en RAM
//////////////////////////////
u8* model_buffer; //buffer para el modelo
model_buffer=(u8*)calloc(model_size, sizeof(u8*));
////////////////////////////////////////////
//si no encuentra memoria bastente, error
///////////////////////////////////////////
if(model_buffer==NULL){iprintf("Memoria RAM isuficiente\n");}
//lo carga con el glCallList...
	glCallList(model_buffer);          //y lo enlaza al cargador
}<a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a><a></a>
ahora tengo la funcion asi...

pero sigue sin funcionar...


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Imagen de kNightFox

Intenta a declarar el buffer

Intenta a declarar el buffer como global, fuera de la funcion

 

Imagen de Andresmargar

Gracias

asi que haciendo un FILE*(como buffer), almacena el binario, y se pone en el glcallist no?

Una manera espectacular de usar estos modelos, pero ahora pienso...

cuando borro el buffer, no dara error de que no lo encuentra o algo? o sigue el juego tal cual?

lo digo porque en el ejemplo de libnds pone el glcallist en un while

Salu2!


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.