[OpenGL] Problème de création de texture (OpenGL et SDL)

Le côté programmation du développement d'un jeu vidéo.

Problème de création de texture (OpenGL et SDL)

Messagepar antoine1fr » 08 Déc 2008, 20:28

Bonjour,

J'ai essayé de charger une image à l'aide de SDL image pour en faire une texture, comme expliqué dans le tuto à cette addresse :
http://forum.games-creators.org/newthread.php?do=newthread&f=24

Mon problème est qu'à l'exécution du programme j'obtiens une erreur de segmentation et je ne sais pas du tout d'où ça vient.

Voici le morceau de code c++ en question :

Code: Tout sélectionner
SDL_Surface *pSurface    = IMG_Load (sTexFileName.c_str());

if (!pSurface)
{
   g_DebugFile << "La texture " << sTexFileName.c_str() << " n'a pas été trouvée.\n";
}

else
{
   glGenTextures (1, &m_nTexture);
   glBindTexture (GL_TEXTURE_2D, m_nTexture);

   glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
   glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
   glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

   glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, pSurface->w, pSurface->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, pSurface->pixels);
}


L'erreur se produit lors de l'appel à glTexImage2D.

Je me suis demandé si le problème venait du format de l'image chargée mais j'ai l'erreur dans tout les formats que j'ai essayés (jpg, bmp, png, pcx). J'ai aussi essayé de locker la surface avant de l'utiliser mais a priori OpenGL n'y accède qu'en lecture donc ça ne sert à rien.

Si quelqu'un pouvait m'aider ce serait super :00000025: !
Merci d'avance.
Avatar de l’utilisateur
antoine1fr
Hello World, I'm new !
 
Messages: 2
Inscription: 08 Déc 2008, 19:05

Messagepar antoine1fr » 08 Déc 2008, 22:10

J'ai enfin réussi à régler mon problème. Le problème venait du format des pixels des images utilisées pour les tests. En ouvrant mes images sous GIMP, je me suis rendu compte que le format était "indexé" au lieu de RVB. Je les ai donc converties au bon format (RVB). Je poste ce message pour ceux que ça intéresse.

Je ne sais pas trop ce que veut dire indexé mais j'ai vu que dans ce format, chaque pixel est stocké sur 1 octet au lieu de 3 ou 4, ce qui fait qu'un pixel a simplement moins de "valeurs" possibles (pour ce que ça interesse), d'où l'erreur de segmentation.

Tous ça m'amène à une nouvelle question : est-il possible de créer des textures avec OpenGL à partir d'images dont les pixels sont encodés sur 8 bits? Si oui comment?

Je demande ça pour pas que mon sujet ne serve à rien, ne croyez pas que j'attends la réponse les mains dans les poches.
Avatar de l’utilisateur
antoine1fr
Hello World, I'm new !
 
Messages: 2
Inscription: 08 Déc 2008, 19:05

Messagepar Atréides » 09 Déc 2008, 09:22

Hello, bienvenue sur le forum :)

Je ne sais pas trop ce que veut dire indexé mais j'ai vu que dans ce format, chaque pixel est stocké sur 1 octet au lieu de 3 ou 4, ce qui fait qu'un pixel a simplement moins de "valeurs" possibles (pour ce que ça interesse), d'où l'erreur de segmentation.

Je crois que ça veut dire qu'en début de fichier image, il y a un tableau contenant des couleurs, et qu'ensuite chaque pixel ne contient que l'index du tableau, et non la couleur. C'est une méthode de compression qui a certains avantages, et certains désavantages.
Souvent présent sur #gcn, irc.langochat.net
Site web : seuret . com (programmation, biostatistiques, CP Explo 2/1)
Avatar de l’utilisateur
Atréides
 
Messages: 1349
Inscription: 13 Mar 2005, 13:12
Localisation: Suisse

Messagepar Kremtak » 10 Déc 2008, 12:45

antoine1fr a écrit:Tous ça m'amène à une nouvelle question : est-il possible de créer des textures avec OpenGL à partir d'images dont les pixels sont encodés sur 8 bits? Si oui comment?


Je suppose que c'est possible si j'en crois le manuel d'opengl : http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml , l'argument "format" peut prendre GL_COLOR_INDEX comme valeur, et tu peux lui spécifier que c'est du 8-bits.
But there's no sense crying over every mistake
You just keep trying until you run out of cake
Avatar de l’utilisateur
Kremtak
Hello World, I'm new !
 
Messages: 167
Inscription: 12 Déc 2007, 23:27
Localisation: Aubagne


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron