Jeux Libres
       
           

» Les Forums » Aide à propos de la création de jeux vidéo » Something went seriously wrong when loading OpenGL textures


Aller à la page : 1.

Something went seriously wrong when loading OpenGL textures
djamelo



Grade : Nouveau venu
Inscrit le: 07 Juin 2019, 17:10
Ecrit le: 07 Juin 2019, 17:17             Message non corrigé

HI ALL

I wanted a function, which can load OpenGL texture into a variable with a single function call.

Started doing something and here's the result:

GLuint LoadTexImG( char filename[] )
{
/* Create storage space for the texture */
SDL_Surface *TexImg;
GLuint texture;

/* Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit */
if ( ( TexImg = IMG_Load(filename) ) )
{

/* color format of image */
GLenum SourceFormat=GL_BGR; /* GL_RGB */
if (TexImg->flags&SDL_SRCALPHA)
SourceFormat=GL_RGBA;
else if (TexImg->format->BitsPerPixel==8)
SourceFormat=GL_COLOR_INDEX;

/* Create The Texture */
glGenTextures( 1, &texture );

/* Typical Texture Generation Using Data From The Bitmap */
glBindTexture( GL_TEXTURE_2D, texture );

/* Generate The Texture */
glTexImage2D( GL_TEXTURE_2D, 0, TexImg->format->BytesPerPixel,
TexImg->w, TexImg->h, 0, SourceFormat,
GL_UNSIGNED_BYTE, TexImg->pixels );

/* Linear Filtering */
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

/*
int width = TexImg->w;
int height = TexImg->h;
*/
}
else
{
/* something went wrong when loading texture, report error message */
printf( "Failed to load texture, reason: %sn", IMG_GetError() );
}

/* Free up any memory we may have used */
if ( TexImg )
SDL_FreeSurface( TexImg );

return texture;
}

As you can see, I use SDL and OpenGL. It can load almost every possible image format due to SDL_image, I tested bmp, tga and png.
Usage: GLuint tex = LoadTexImG("data/texture.bmp"); and when using this texture: glBindTexture(GL_TEXTURE_2D, tex);

But if I call that function multiple times for different textures, all texture data will be replaced with the latest one loaded. What is the problem, how to fix it?

Please help.
Thanks
I didn't find the right solution from the Internet.

References: https://ubuntuforums.org/archive/index.php/t-976450.html

unlock

  Profil
 


Aller à la page : 1.


Hébergeur du site : David
Version PHP : 5.4.45-0+deb7u2
Uptime : 206 jours 16 heures 54 minutes
Espace libre : 1561 Mo
Dernière sauvegarde : 18/06/2019
Taille de la sauvegarde : 1113 Mo


5294603 pages ont été consultées sur le site !
Dont 2103 pages pendant les 24 dernières heures.

Page générée en 0.498 secondes


Nos sites préférés
- Création d'un jeu de plateforme de A à Z avec SDL
- Zelda ROTH : Jeux amateurs sur le thème de Zelda
- Zeste de Savoir : la connaissance pour tous et sans pépins
- YunoHost : s'héberger soi-même en toute simplicité
- Site de Fvirtman : recueil de projets et de codes en C et C++
- Par ici la sortie : le site des idées de sorties


  © 2005-2019 linor.fr - Toute reproduction totale ou partielle du contenu de ce site est strictement interdite.