grimoire
08-09-2004, 02:25 PM
I am trying to make a heightmap program, but I can't seem to acquire the pixel data from a bitmap with SDL, I keep getting a seg fault; I know it is in the SDL_GetRGB function, but I don't know why?
int tl(void){
int status=0;
SDL_Surface *surface;
Uint32 *ptr,color;
Uint8 *r=NULL,*b=NULL,*g=NULL;
if((surface=SDL_LoadBMP("/home/michael/temp/lesson-6/lesson06/data/true.
bmp"))){
status=1;
glGenTextures(1,&texture[0]);
glBindTexture(GL_TEXTURE_2D,texture[0]);
glTexImage2D(GL_TEXTURE_2D,0,1,surface->w,surface->h,0,GL_BGR,GL
_UNSIGNED_BYTE,surface->pixels);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTE R,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL _REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL _REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTE R,GL_NEAREST);
}
if(surface)
SDL_FreeSurface(surface);
ptr=((Uint32 *)surface->pixels+(1%surface->h)*(surface->pitch/4)+(1%surf
ace->w));
color=*ptr;
SDL_GetRGB(color,surface->format,&r,&g,&b);
return status;
}
int tl(void){
int status=0;
SDL_Surface *surface;
Uint32 *ptr,color;
Uint8 *r=NULL,*b=NULL,*g=NULL;
if((surface=SDL_LoadBMP("/home/michael/temp/lesson-6/lesson06/data/true.
bmp"))){
status=1;
glGenTextures(1,&texture[0]);
glBindTexture(GL_TEXTURE_2D,texture[0]);
glTexImage2D(GL_TEXTURE_2D,0,1,surface->w,surface->h,0,GL_BGR,GL
_UNSIGNED_BYTE,surface->pixels);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTE R,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL _REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL _REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTE R,GL_NEAREST);
}
if(surface)
SDL_FreeSurface(surface);
ptr=((Uint32 *)surface->pixels+(1%surface->h)*(surface->pitch/4)+(1%surf
ace->w));
color=*ptr;
SDL_GetRGB(color,surface->format,&r,&g,&b);
return status;
}