Original Post
I''m trying to get 2 bmps to conbine into one 32 bit texture, heres the function that I made. it crashes my comp. it takes a filename of the bmp for the first 3 bits, and another bmp filename for the alpha channel, and a GLuint for the texture to be bound to.
when tex3 is loaded it doesen''t work right I don''t know how to debug well but it seems to be loading the wrong data
If somone can tell me whats wrong that would be great. Klaus
int loadtexalpha(char *str1,char *str2,GLuint *tex){
AUX_RGBImageRec *tex2=NULL;
if(!(tex2=LoadBMP(str1)))
return(0);
AUX_RGBImageRec *tex3=NULL;
if(!(tex3=LoadBMP(str2)))
return(0);
if(tex2->sizeX!=tex3->sizeX || tex2->sizeY!=tex3->sizeY){
if(tex2){
if(tex2->data){
free(tex2->data);
}
free(tex2);
}
if(tex3){
if(tex3->data){
free(tex3->data);
}
free(tex3);
}
return(0);
}
AUX_RGBImageRec tex4;
tex4.sizeX=tex2->sizeX;
tex4.sizeY=tex2->sizeY;
tex4.data=(unsigned char *)malloc(sizeof(tex2->data)+(sizeof(tex3->data)/3));
int num=(tex2->sizeY*tex2->sizeX)*3;
int y=0;
int x=0;
while(y<num){
tex4.data[x]=tex2->data[y];
tex4.data[x+1]=tex2->data[y+1];
tex4.data[x+2]=tex2->data[y+2];
tex4.data[x+3]=(tex3->data[y]+tex3->data[y+1]+tex3->data[y+2])/3;
y+=3;
x+=4;
}
glGenTextures(1,tex);
glBindTexture(GL_TEXTURE_2D, *(tex));
glTexImage2D(GL_TEXTURE_2D, 0, 3, tex4.sizeX,
tex4.sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE,
tex4.data);
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_NEAREST_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB,tex4.sizeX,tex4.sizeY,GL_RGB,GL_UNSIGNED_BYTE,tex4.data);
if(tex2){
if(tex2->data){
free(tex2->data);
}
free(tex2);
}
if(tex3){
if(tex3->data){
free(tex3->data);
}
free(tex3);
}
if(tex4.data){
free(tex4.data);
}
return(1);
}