Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema texture OpenGL
Forum - C/C++ - Problema texture OpenGL

Avatar
feed (Normal User)
Newbie


Messaggi: 1
Iscritto: 08/10/2013

Segnala al moderatore
Postato alle 1:29
Martedì, 08/10/2013
ciao a tutti,
grazie in anticipo delle risposte.
Questa è la mia funzione:
Codice sorgente - presumibilmente C/C++

  1. void old2()
  2. {
  3.         glEnable(GL_TEXTURE_2D);
  4.         glBindTexture(GL_TEXTURE_2D, prova.getID());
  5.         glBegin(GL_POLYGON);
  6.         //alto-sx
  7.         glTexCoord3f(0.0, 0.0, 0.0);
  8.         glVertex3f(-0.5, -0.5, 0.0);
  9.         //alto-dx
  10.         glTexCoord3f(1.0, 0.0, 0.0);
  11.         glVertex3f(0.5, -0.5, 0.0);
  12.         //basso-dx
  13.         glTexCoord3f(1.0, 1.0, 0.0);
  14.         glVertex3f(0.5, 0.5, 0.0);
  15.         //basso-sx
  16.         glTexCoord3f(0.0, 1.0, 0.0);
  17.         glVertex3f(-0.5, 0.5, 0.0);
  18.         glEnd();
  19.         glDisable(GL_TEXTURE_2D);
  20. }


In pratica questa funziona mi disegna solo un quadrato bianco su uno sfondo nero mentre la texture che ho caricato dovrebbe essere rossa!
(la carica come texture 1, larghezza 100px, altezza 100px, mode GL_RGB)

Questa è la funzione per caricare le texture. Dai Log questa funziona:
Codice sorgente - presumibilmente C++

  1. bool myTexture::prova1(std::string path)
  2. {
  3.         bool success = true;
  4.         SDL_Surface* loadedSurface = IMG_Load(path.c_str());
  5.  
  6.         if (loadedSurface == NULL)
  7.         {
  8.                 printf("Unable to load image %s! SDL_image Error: %s\n", path.c_str(), IMG_GetError());//da lavorarci
  9.                 success = false;
  10.         }
  11.         else
  12.         {
  13.                 //Create texture from surface pixels
  14.                 //newTexture = SDL_CreateTextureFromSurface(gRenderer, loadedSurface);
  15.                 mColors = loadedSurface->format->BytesPerPixel;
  16.                 if (mColors == 4)
  17.                 {
  18.                         if (loadedSurface->format->Rmask == 0x000000ff)
  19.                                 texture_format = GL_RGBA;
  20.                         else
  21.                                 texture_format = GL_BGRA_EXT;
  22.                 }
  23.                 else if (mColors == 3)
  24.                 {
  25.                         if (loadedSurface->format->Rmask == 0x000000ff)
  26.                                 texture_format = GL_RGB;
  27.                         else
  28.                                 texture_format = GL_BGR_EXT;
  29.                 }
  30.                 else
  31.                 {
  32.                         printf("Errore caricamento texture!");
  33.                         success = false;
  34.                 }
  35.                 glGenTextures(1, &mID);//genera un id
  36.                
  37.                 glBindTexture(GL_TEXTURE_2D, mID);//aggiunge l'id all'area di memoria delle txtr2d
  38.                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);//setta parametri a caso
  39.                 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  40.                 glTexImage2D(GL_TEXTURE_2D, 0, mColors, loadedSurface->w, loadedSurface->h, 0, texture_format, GL_UNSIGNED_BYTE, loadedSurface->pixels);//carica la txtr in memoria
  41.                 mWidth = loadedSurface->w;
  42.                 mHeight = loadedSurface->h;
  43.                 SDL_FreeSurface(loadedSurface);
  44.                 printf("Texture(%d), W(%d), H(%d), Mode(%0x).\n", mID, loadedSurface->w, loadedSurface->h, texture_format);
  45.  
  46.         }
  47.         return success;
  48. }


qualche idea del mio errore?

Ultima modifica effettuata da feed il 08/10/2013 alle 1:31
PM Quote