Now I am trying to build it on Ubuntu (Linux). It build fine but crashes.
Upon running the debugger I get:
"<terminated>gdb/mi (1/9/11 5:11 PM) (Exited. Signal 'SIGSEGV' received. Description: Segmentation fault.) "
The debugger stops in the function in the code below.
What is wrong with it?
I'm just so lost, it works fine on Windows.
Thanks in advance,
CoderWalker
//OpenGL Load texture
GLuint GLTex(SDL_Surface* surface){
GLuint texture; // This is a handle to our texture object
GLenum texture_format;
GLint nOfColors;
// Check that the image's width is a power of 2
if ( (surface->w & (surface->w - 1)) != 0 ) { <==========================This is the last line the debugger shows
printf("warning: image.bmp's width is not a power of 2\n");
}
// Also check if the height is a power of 2
if ( (surface->h & (surface->h - 1)) != 0 ) {
printf("warning: image.bmp's height is not a power of 2\n");
}
// get the number of channels in the SDL surface
nOfColors = surface->format->BytesPerPixel;
if (nOfColors == 4) // contains an alpha channel
{
if (surface->format->Rmask == 0x000000ff)
texture_format = GL_RGBA;
else
texture_format = GL_BGRA;
} else if (nOfColors == 3) // no alpha channel
{
if (surface->format->Rmask == 0x000000ff)
texture_format = GL_RGB;
else
texture_format = GL_BGR;
} else {
printf("warning: the image is not truecolor.. this will probably break\n");
// this error should not go unhandled
}
// Have OpenGL generate a texture object handle for us
glGenTextures( 1, &texture );
// Bind the tewxture object
glBindTexture( GL_TEXTURE_2D, texture );
// Set the texture's stretching properties
/////Smooth Textures (isoMetric)
//glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
//glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
////Blocky Texures (FPS)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
// Edit the texture object's image data using the information SDL_Surface gives us
glTexImage2D( GL_TEXTURE_2D, 0, nOfColors, surface->w, surface->h, 0,
texture_format, GL_UNSIGNED_BYTE, surface->pixels );
return texture;
// Free the SDL_Surface only if it was successfully created
if ( surface ) {
SDL_FreeSurface( surface );
}
}