2012-12-26 24 views
0

所以我有點做了一個小的bmp進口商爲了能夠在opengl中使用紋理,但在我加載圖片和東西,而不是紋理後,它只是把顏色棕色的... sqare 我也嘗試過超過1個紋理,我得到了相同的保護。 下面是一些代碼:我的bmp不耐煩怎麼回事?

int LoadBitmap (char *filename) { 
    BITMAPFILEHEADER fileheader; 
    BITMAPINFOHEADER fileinfo; 
    RGBTRIPLE rgb; 
    unsigned char *texture; 
    FILE *f=fopen(filename,"r"); 
    num_texture++; 
    fread(&fileheader,sizeof(fileheader),1,f); 
    fread(&fileinfo,sizeof(fileinfo),1,f); 
    cout<<fileinfo.biWidth<<" "<<fileinfo.biHeight<<endl; 

    texture=new unsigned char[fileinfo.biWidth*fileinfo.biHeight*4]; 
    int j=0; 
    for(int i=0;i<fileinfo.biWidth*fileinfo.biHeight;i++) 
    { 
    fread(&rgb,sizeof(rgb),1,f); 

    texture[j]=rgb.rgbtRed; 
    texture[j+1]=rgb.rgbtGreen; 
    texture[j+2]=rgb.rgbtBlue; 
    texture[j+3]=255; 
    j+=4; 
    } 
    fclose(f); 

    glBindTexture(GL_TEXTURE_2D,num_texture); 

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); 

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 


    glTexImage2D(GL_TEXTURE_2D,0,4,fileinfo.biWidth,fileinfo.biHeight,0,GL_RGBA,GL_UNSIGNED_BYTE,texture); 
    gluBuild2DMipmaps(GL_TEXTURE_2D,4,fileinfo.biWidth,fileinfo.biHeight,GL_RGBA,GL_UNSIGNED_BYTE,texture); 

    delete[] texture; 
    return num_texture; 
    return 0; 
} 

,這裏是繪圖部分:

glEnable(GL_TEXTURE_2D); 
int a=LoadBitmap("texture1.bmp"); 
glBindTexture(GL_TEXTURE_2D,a); 
glBegin(GL_QUADS); 
    glTexCoord2f(0,0); 
    glVertex3f(-10,-10,0); 
    glTexCoord2f(0,1); 
    glVertex3f(-10,10,0); 
    glTexCoord2f(1,1); 
    glVertex3f(10,10,0); 
    glTexCoord2f(1,0); 
    glVertex3f(10,-10,0); 
glEnd(); 

回答

2
FILE *f=fopen(filename,"r"); 

你可能要嘗試打開該文件在二進制模式下,它可以簡單地檢測文件的結束或以其他方式改變輸入。

FILE *f=fopen(filename,"rb"); 

也使有關文件的實際格式的一些假設,但假設你生成的BMP自己,我想這可能是好的。

+0

在查詢之前,我查了一下bmp格式:http://en.wikipedia.org/wiki/BMP_file_format但遺憾的是我不知道如何實現那些最優化的東西(我的意思是我真的不知道如何如果他們不在那裏,我們可以通過他們)我想能夠導入任何bmp,但我不知道如果沒有結構名稱在乞討中有某種標題或idk,因爲它們具有可變大小 – user1640736