programmation nintendo ds
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
programmation nintendo ds

un forum sur la programmation sur nintendo ds principalement en 3d, site : http://delfare.pizz.biz
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

 

 3D et plusieurs textures

Aller en bas 
AuteurMessage
Gwoin
Nouveau



Nombre de messages : 1
Date d'inscription : 13/03/2006

3D et plusieurs textures Empty
MessageSujet: 3D et plusieurs textures   3D et plusieurs textures EmptyLun 13 Mar à 10:46

Salut à tous.

Alors voilà, j'ai un probleme dont je ne trouve pas la solution:
j'ai 2 objets dans ma scene avec chacun leur texture (pcx), mais seule la 1ere texture chargée semble s'afficher (objet blanc)

Voici le code que j'utilise:
Code:
int   texture[2];         // Storage For 2 Textures

//initialise la 3D
void Init3D()
{
   static bool m_bFirstLaunch = true;
   ////if (m_bFirstLaunch)
   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,12);
   glClearDepth(0x7FFF);

   //PA_Init3D();

   if (m_bFirstLaunch)
      LoadGLTextures();

   if (m_bFirstLaunch)
      m_bFirstLaunch = false;

   //PA_Init3D();
   //PA_LoadTexture(texture[0],(u8*)BG_DOWN_pcx, texPCX);
   //PA_LoadTexture(texture[1],(u8*)cube_pcx, texPCX);
}


//affiche la scene
void DrawGLScene()
{
   // Reset the screen and setup the view
   glReset();
   gluPerspective(35, 256.0 / 192.0, 0.1, 100);
   glColor3f(1,1,1);

   glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE | POLY_FORMAT_LIGHT0);
   glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0);

   glMatrixMode(GL_TEXTURE);
   glIdentity();

   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();

   glMaterialf(GL_AMBIENT, RGB15(16,16,16));
   glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
   glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
   glMaterialf(GL_EMISSION, RGB15(16,16,16));

   glMaterialShinyness();

   Test3DKeys();

   RenderFond();
   RenderCube();
             
   glFlush();
}

//affichage de mes 2 objets : une grille et un cube
void RenderCube()
{
   glPushMatrix();   
   {
      glColor3f(0.1f, 0.8f, 0.1f);
      glTranslatef(0.0f,0.3f,-3.0f);

      glRotatef(m_fRotationCubeX,1.0f,0.0f,0.0f);
      glRotatef(m_fRotationCubeY,0.0f,1.0f,0.0f);

      //glBindTexture(GL_TEXTURE_2D, texture[1]);
      PA_Texture(texture[1]);

      float l = 0.8;
      //PA_3DBoxTexture(0.0f,0.0f,0.0f, l, l, l, 0.0f, 0.0f, 0.0f, 256,256,256);
      glBegin(GL_QUADS);
      {
         // Front Face
         glNormal3f( 0.0f, 0.0f, 1.0f);
         glTexCoord2f(0.0f, 0.0f); glVertex3f(-l, -l,  l);
         glTexCoord2f(1.0f, 0.0f); glVertex3f( l, -l,  l);
         glTexCoord2f(1.0f, 1.0f); glVertex3f( l,  l,  l);
         glTexCoord2f(0.0f, 1.0f); glVertex3f(-l,  l,  l);
         // Back Face
         glNormal3f( 0.0f, 0.0f,-1.0f);
         glTexCoord2f(1.0f, 0.0f); glVertex3f(-l, -l, -l);
         glTexCoord2f(1.0f, 1.0f); glVertex3f(-l,  l, -l);
         glTexCoord2f(0.0f, 1.0f); glVertex3f( l,  l, -l);
         glTexCoord2f(0.0f, 0.0f); glVertex3f( l, -l, -l);
         // Top Face
         glNormal3f( 0.0f, 1.0f, 0.0f);
         glTexCoord2f(0.0f, 1.0f); glVertex3f(-l,  l, -l);
         glTexCoord2f(0.0f, 0.0f); glVertex3f(-l,  l,  l);
         glTexCoord2f(1.0f, 0.0f); glVertex3f( l,  l,  l);
         glTexCoord2f(1.0f, 1.0f); glVertex3f( l,  l, -l);
         // Bottom Face
         glNormal3f( 0.0f,-1.0f, 0.0f);
         glTexCoord2f(1.0f, 1.0f); glVertex3f(-l, -l, -l);
         glTexCoord2f(0.0f, 1.0f); glVertex3f( l, -l, -l);
         glTexCoord2f(0.0f, 0.0f); glVertex3f( l, -l,  l);
         glTexCoord2f(1.0f, 0.0f); glVertex3f(-l, -l,  l);
         // Right face
         glNormal3f( 1.0f, 0.0f, 0.0f);
         glTexCoord2f(1.0f, 0.0f); glVertex3f( l, -l, -l);
         glTexCoord2f(1.0f, 1.0f); glVertex3f( l,  l, -l);
         glTexCoord2f(0.0f, 1.0f); glVertex3f( l,  l,  l);
         glTexCoord2f(0.0f, 0.0f); glVertex3f( l, -l,  l);

         // Left Face
         glNormal3f(-1.0f, 0.0f, 0.0f);
         glTexCoord2f(0.0f, 0.0f); glVertex3f(-l, -l, -l);
         glTexCoord2f(1.0f, 0.0f); glVertex3f(-l, -l,  l);
         glTexCoord2f(1.0f, 1.0f); glVertex3f(-l,  l,  l);
         glTexCoord2f(0.0f, 1.0f); glVertex3f(-l,  l, -l);
      }
      glEnd();
   }
   glPopMatrix(1);
}

void RenderFond()
{
   glPushMatrix();   
   {
      glTranslatef(0.0f,-1.2f,-5.5f);

      glBindTexture(GL_TEXTURE_2D, texture[0]);

      //glColor3f(0.8f, 0.1f, 0.1f);
      v16 w=floattov16(5.0f);
      v16 h=floattov16(5.0f);
      glBegin(GL_QUADS);
      {
         glNormal3f(0.0f, 0.0f, 1.0f);
         
         glTexCoord2f(2.0f, 0.0f); glVertex3v16(-w, -h,  0);
         glTexCoord2f(2.0f, 2.0f); glVertex3v16( w, -h,  0);
         glTexCoord2f(0.0f, 2.0f); glVertex3v16( w,  h,  0);
         glTexCoord2f(0.0f, 0.0f); glVertex3v16(-w,  h,  0);
      }
      glEnd();
   }
   glPopMatrix(1);
}

//et enfin le code pour charger les textures en mémoire
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);
   }
}

Mes textures sont bien à la bonne taille (de toute facon j'ai essayé avec d'autres tailles), et quand j'applique la 1ere texture sur les 2 objets tout est correct, mme chose si j'inverse l'ordre de chargement des textures.

Quelqu'un à une idéede où peut venir mon probleme?

Merci
Revenir en haut Aller en bas
 
3D et plusieurs textures
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
programmation nintendo ds :: programmation sur nintendo ds :: question-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser