i have a bmp (it’s a strip) that i want to break up into smaller 32x32 chunks and store each chunk in an array space. for some reason i get a segfault on my glTexImage2D() calls. im using x 4.2, sdl, and gcc 3.1. any ideas? here’s my function:
bool LoadTileSet(unsigned int setid)
{
// NOTE: setid is unused at the moment, use when multiple sets exist.
// eventually gonna use a tile set class or something like that.
SDL_Surface *TextureImage = NULL;
SDL_Surface *TextureImageTemp = NULL;
SDL_Rect src, dest;
TextureImage = SDL_LoadBMP(“tiles.bmp”);
if (TextureImage == NULL)
return false;
if (background_tiles)
glDeleteTextures(MAX_TILES, background_tiles);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures(MAX_TILES, &background_tiles[0]);
for (int i = 0; i < MAX_TILES; i++) {
src.x = i * 32;
src.y = 0;
src.w = 32;
src.h = TextureImage->h;
dest.x = 0;
dest.y = 0;
dest.w = 32;
dest.h = TextureImage->h;
SDL_BlitSurface(TextureImage, &src, TextureImageTemp, &dest);
glBindTexture(GL_TEXTURE_2D, background_tiles[i]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// ***bombs here: ***
if (TextureImageTemp->format->BytesPerPixel == 3)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 32, 32, 0,
GL_RGB, GL_UNSIGNED_BYTE, TextureImageTemp->pixels);
else
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 32, 32, 0,
GL_RGBA, GL_UNSIGNED_BYTE, TextureImageTemp->pixels);
}
glEnable(GL_TEXTURE_2D);
SDL_FreeSurface(TextureImage);
SDL_FreeSurface(TextureImageTemp);
return true;
}