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