Gwoin
12/03/2006, 01h14
Salut à tous,
Je fait de petits tests en 3D sur DS et j'affiches plusieurs objets avec chacun sa propre texture.
Enfin du moins j'essaie parce que seule la premiere texture semble vouloir être utilisée...
Je m'explique:
Par exemple, j'affiche un cube et un plan.
Le plan a la 1ere texture et le cube à la seconde texture... sauf que lui je le voit tout blanc :blink:
Si j'attache la 1ere texture (je veux dire la 1ere texture chargée) aux 2 objets, pas de probleme. Si j'inverse l'ordre de chargement des textures, c'est bien l'autre texture qui est correctement affichée: le cube est alors correct et le plan est blanc.
Donc ça ne vient pas de mes textures, mais plutot de leur chargement.
j'utilise ça comme code de chargement et d'initialisation:
int texture[2]; //identifiant des 2 textures
//pour attacher ma texture, je fais appel à :
glBindTexture(GL_TEXTURE_2D, texture[0]);
//ou
glBindTexture(GL_TEXTURE_2D, texture[1]);
//sachant que mes UVs sont bien attribués
//charge les 2 textures en mémoire: 1 pcx de 256x256 et 1 pcx de 128x128
void LoadGLTextures()
{
int i=0;
for (i=0; i<2; i++)
{
sImage pcx;
//load our textures
if (i == 0)
loadPCX((u8*)BG_DOWN_pcx, &pcx);
else if (i == 1)
loadPCX((u8*)cube_pcx, &pcx);
image8to16(&pcx);
glGenTextures(1, &texture[i]);
glBindTexture(GL_TEXTURE_2D, texture[i]);
if (i==0)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXTURE_SIZE_256 , TEXTURE_SIZE_256, 0, TEXGEN_TEXCOORD, pcx.data8);
else
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.data8);
imageDestroy(&pcx);
}
}
//appelé au début pour initialiser la 3D
void Init3D()
{
// Turn on everything
powerON(POWER_ALL);
// Setup the Main screen for 3D
videoSetMode(MODE_0_3D);
vramSetBankA(VRAM_A_TEXTURE);
// IRQ basic setup
irqInit();
irqSet(IRQ_VBLANK, 0);
// Set our viewport to be the same size as the screen
glViewPort(0,0,255,191);
// Specify the Clear Color and Depth
glClearColor(0,0,0);
glClearDepth(0x7FFF);
LoadGLTextures();
}
Il semble que quand j'attache la 2eme texture (texture[1]), rien n'est attaché >_<
Quelqu'un aurait une idée ?
Il y a autre chose à faire sur DS pour avoir plusieurs textures ou alors j'ai fait une grosse connerie tellement énorme que je l'ai pas vu (ça reste fortement possible :p ) ?? :-*
Je fait de petits tests en 3D sur DS et j'affiches plusieurs objets avec chacun sa propre texture.
Enfin du moins j'essaie parce que seule la premiere texture semble vouloir être utilisée...
Je m'explique:
Par exemple, j'affiche un cube et un plan.
Le plan a la 1ere texture et le cube à la seconde texture... sauf que lui je le voit tout blanc :blink:
Si j'attache la 1ere texture (je veux dire la 1ere texture chargée) aux 2 objets, pas de probleme. Si j'inverse l'ordre de chargement des textures, c'est bien l'autre texture qui est correctement affichée: le cube est alors correct et le plan est blanc.
Donc ça ne vient pas de mes textures, mais plutot de leur chargement.
j'utilise ça comme code de chargement et d'initialisation:
int texture[2]; //identifiant des 2 textures
//pour attacher ma texture, je fais appel à :
glBindTexture(GL_TEXTURE_2D, texture[0]);
//ou
glBindTexture(GL_TEXTURE_2D, texture[1]);
//sachant que mes UVs sont bien attribués
//charge les 2 textures en mémoire: 1 pcx de 256x256 et 1 pcx de 128x128
void LoadGLTextures()
{
int i=0;
for (i=0; i<2; i++)
{
sImage pcx;
//load our textures
if (i == 0)
loadPCX((u8*)BG_DOWN_pcx, &pcx);
else if (i == 1)
loadPCX((u8*)cube_pcx, &pcx);
image8to16(&pcx);
glGenTextures(1, &texture[i]);
glBindTexture(GL_TEXTURE_2D, texture[i]);
if (i==0)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXTURE_SIZE_256 , TEXTURE_SIZE_256, 0, TEXGEN_TEXCOORD, pcx.data8);
else
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.data8);
imageDestroy(&pcx);
}
}
//appelé au début pour initialiser la 3D
void Init3D()
{
// Turn on everything
powerON(POWER_ALL);
// Setup the Main screen for 3D
videoSetMode(MODE_0_3D);
vramSetBankA(VRAM_A_TEXTURE);
// IRQ basic setup
irqInit();
irqSet(IRQ_VBLANK, 0);
// Set our viewport to be the same size as the screen
glViewPort(0,0,255,191);
// Specify the Clear Color and Depth
glClearColor(0,0,0);
glClearDepth(0x7FFF);
LoadGLTextures();
}
Il semble que quand j'attache la 2eme texture (texture[1]), rien n'est attaché >_<
Quelqu'un aurait une idée ?
Il y a autre chose à faire sur DS pour avoir plusieurs textures ou alors j'ai fait une grosse connerie tellement énorme que je l'ai pas vu (ça reste fortement possible :p ) ?? :-*