loading textured models from fat?
loading textured models from fat?
hi can anyone could help me with loading models & textures using libfat on DS?
then i compile it seems to just freeze when i try to load a model with texture.
then i compile it seems to just freeze when i try to load a model with texture.
Re: loading modeled textures from fat?
you need to provide some information if you want people to help you. what have you tried? do you have source code that people could look at?
Re: loading modeled textures from fat?
heres the source code if you would like to take look at.elhobbs wrote:you need to provide some information if you want people to help you. what have you tried? do you have source code that people could look at?
im useing the method from "C:\devkitPro\examples\nds\Graphics\Backgrounds\all_in_one"
as a basic menu to select the selection then run the code.
i have the files (models & textures) converted to bin format in a folder called FAT DATA.
Code: Select all
#include <nds.h>
#include <fat.h>
#include <string.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <dswifi9.h>
#include <maxmod9.h>
#include "soundbank.h"
#include "soundbank_bin.h"
//objects
int bcartex64_texid;
int cratetex64_texid;
int cratemetaltex64_texid;
int cratet3tex64_texid;
//solo
void map0(void) //test [model viewer]
{
//camera
int rx = 0, ry = 0;
int oldx = 0, oldy = 0;
int p1xpos = -20, p1ypos = -0;
//models
int modelnum = 0;
touchPosition touchXY;
videoSetMode(MODE_0_3D);
//initialize the geometry engine
glInit();
//enable antialiasing
glEnable(GL_ANTIALIAS);
glClearColor(0,128,128,31); glClearPolyID(63); glClearDepth(0x7FFF);
// Set our viewport to be the same size as the screen
glViewport(0,0,255,191);
{//textures
vramSetBankA(VRAM_A_TEXTURE);
glEnable(GL_TEXTURE_2D);
//crate texture
glGenTextures( 1, &cratetex64_texid ); glBindTexture( 0, cratetex64_texid );
glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "cratetex64.bin");
//crate metal texture
glGenTextures( 1, &cratemetaltex64_texid ); glBindTexture( 0, cratemetaltex64_texid );
glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "cratemetaltex64.bin");
//crate t3 texture
glGenTextures( 1, &cratet3tex64_texid ); glBindTexture( 0, cratet3tex64_texid );
glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "cratet3tex64.bin");
//crate t3 texture
glGenTextures( 1, &bcartex64_texid ); glBindTexture( 0, bcartex64_texid );
glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "bcartex64.bin");
}
{//bottom screen stuff
videoSetModeSub(MODE_0_2D);
PrintConsole bottomScreen;
vramSetBankC(VRAM_C_SUB_BG);
consoleInit(&bottomScreen, 0,BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true);
iprintf("T3-Games-Zero [Model view]");
printf("\x1b[3;1HPress D-Pad> Movement.");
printf("\x1b[4;1HTouch> Rotate");
//main loop
while (1) {
scanKeys(); touchRead(&touchXY);
int held = keysHeld(), pressed = keysDown();
{//insert to move camera around here
if(held & KEY_RIGHT && p1ypos > -10)p1ypos -=1;
if(held & KEY_LEFT && p1ypos < 10)p1ypos +=1;
if(held & KEY_DOWN && p1xpos > -35)p1xpos -=1;
if(held & KEY_UP && p1xpos <-5)p1xpos +=1;}
printf("\x1b[5;2HPress L/R> Change Model %d - 1", modelnum);
{//model change
if(pressed & KEY_L && modelnum > 0) modelnum -=1;
if(pressed & KEY_R && modelnum < 2)modelnum +=1;}
//reset x and y when user touches screen
if(pressed & KEY_TOUCH){oldx = touchXY.px; oldy = touchXY.py;}
//if user drags then grab the delta
if(held & KEY_TOUCH){
rx += touchXY.px - oldx; oldx = touchXY.px;
ry += touchXY.py - oldy; oldy = touchXY.py;}
//handle camera
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70, 256.0 / 192.0, 0.1, 175);
glPolyFmt(POLY_ALPHA(31)| POLY_CULL_NONE );
glMaterialShinyness ();
{//lighting
glLight(0, RGB15(31,31,31), 0, floattov10(-1.0) , 0);
glLight(1, RGB15(31,0,31) , 0,floattov10(1) - 1, 0);
glLight(2, RGB15(0,31,0) , floattov10(-1.0), 0, 0);
glLight(3, RGB15(0,0,31) , floattov10(1.0) - 1,0,0);}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0,0,-10);
glTranslatef(p1ypos,0,p1xpos); glRotateY(rx);glRotateX(ry);
printf("\x1b[9;5HtestRX:%d ", rx);
printf("\x1b[10;6HtestRY:%d ", ry);
printf("\x1b[11;7HtestPX:%d ", touchXY.px);
printf("\x1b[12;8HtestPY:%d ", touchXY.px);
if(modelnum == 0){//nothing
printf("\x1b[6;2HNothing");
}//nothing
if(modelnum == 1){//crates
//crate
printf("\x1b[6;2HCrates ");
glPushMatrix();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
glMaterialf(GL_AMBIENT, RGB15(8,8,8));
glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
glMaterialf(GL_EMISSION, RGB15(5,5,5));
glTranslatef(0,0,0);
glScalef32(10000,10000,10000);
glBindTexture( 0, cratetex64_texid );
glCallList((u32*)"crate64.bin");
glPopMatrix(1);
//crate metal
glPushMatrix();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
glMaterialf(GL_AMBIENT, RGB15(8,8,8));
glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
glMaterialf(GL_EMISSION, RGB15(5,5,5));
glTranslatef(10,0,-10); //glRotateX(ry); glRotateY(rx);
glScalef32(10000,10000,10000);
glBindTexture( 0, cratemetaltex64_texid );
glCallList((u32*)"crate64.bin");
glPopMatrix(1);
//crate t3
glPushMatrix();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
glMaterialf(GL_AMBIENT, RGB15(8,8,8));
glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
glMaterialf(GL_EMISSION, RGB15(5,5,5));
glTranslatef(-10,0,-10); //glRotateX(ry); glRotateY(rx);
glScalef32(10000,10000,10000);
glBindTexture( 0, cratet3tex64_texid );
glCallList((u32*)"crate64.bin");
glPopMatrix(1);
}//crates
if(modelnum == 2){//car
printf("\x1b[6;2HCar ");
glPushMatrix();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
glMaterialf(GL_AMBIENT, RGB15(8,8,8));
glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
glMaterialf(GL_EMISSION, RGB15(5,5,5));
glTranslatef(0,0,0);
glScalef32(10000,10000,10000);
glBindTexture( 0, bcartex64_texid );
glCallList((u32*)"bcar64.bin");
glPopMatrix(1);
}//car
swiWaitForVBlank();
// flush to the screen
glFlush(0);
}
}
Re: loading textured models from fat?
bump bump
Re: loading textured models from fat?
glTexImage2D and glCallList do not take filenames as parameters. where you are specifying filenames they are actually looking for buffers where the data representing the object have been loaded. look at the libfat examples for how to read data from files. of course this assumes that the data in the files you are referencing are already in the expected ds specific formats.
Re: loading textured models from fat?
the models are converted .bin, & the textures im useing are .pcx.
Re: loading textured models from fat?
what about nitrofs? examples>nds>filesystem>nitrodir
Re: loading textured models from fat?
what about nitrofs? are you asking if it can be used or suggesting a solution?
the fat and nitrofs examples show to to read data from disk. Is your question "how do I read from disk?" or is it "how do I parse the data in my files"? the first question is answered by the samples. the second question requires more information about how the model was created and what format it is saved in. there are libnds functions for using pcx files for ds textures - look at the examples.
not to be intentionally cruel but it has been over a year since your original post. either you are putting in 0 effort on your part, or you may have no aptitude for the task at hand. you may want to consider taking a basic level C programming course or try programming for a pc instead. there are easier development tools and tutorials/examples for the pc.
the fat and nitrofs examples show to to read data from disk. Is your question "how do I read from disk?" or is it "how do I parse the data in my files"? the first question is answered by the samples. the second question requires more information about how the model was created and what format it is saved in. there are libnds functions for using pcx files for ds textures - look at the examples.
not to be intentionally cruel but it has been over a year since your original post. either you are putting in 0 effort on your part, or you may have no aptitude for the task at hand. you may want to consider taking a basic level C programming course or try programming for a pc instead. there are easier development tools and tutorials/examples for the pc.
Who is online
Users browsing this forum: No registered users and 1 guest