void renderview(void)//读取背景纹理
{
 int i,j;
 FILE *fp;
    unsigned char *image;
 int rc;
 fp=fopen("5.bmp","rb");
 if(!fp)std::cout<<"Cannot read background!"<<endl;
 fseek(fp,54,SEEK_SET);
 image=(unsigned char*)malloc(WIDTH*WIDTH*3);
 rc=fread(image,sizeof(unsigned char),WIDTH*WIDTH*3,fp);
 fclose(fp);
 for(i=0;i<WIDTH;i++)
 {
  for(j=0;j<WIDTH;j++)
  {
  texImg[i][j][2]=(GLubyte)*(image+i*WIDTH*3+j*3);
  texImg[i][j][1]=(GLubyte)*(image+i*WIDTH*3+j*3+1);
  texImg[i][j][0]=(GLubyte)*(image+i*WIDTH*3+j*3+2);
  }
 }
}
以上是一段标准的读取bmp格式图片的代码,如果定义WIDTH=1024,那么就是读取1024*1024的正方形的bmp图
我想问的是
1.如果我想读取一个长方形的位图,比如1024*512,应该怎样修改一下?
WIDTH=1024;
LENGTH=512;
void renderview(void)//读取背景纹理
{
 int i,j;
 FILE *fp;
    unsigned char *image;
 int rc;
 fp=fopen("5.bmp","rb");
 if(!fp)std::cout<<"Cannot read background!"<<endl;
 fseek(fp,54,SEEK_SET);
 image=(unsigned char*)malloc(WIDTH*LENGTH*3);
 rc=fread(image,sizeof(unsigned char),WIDTH*LENGTH*3,fp);
 fclose(fp);
 for(i=0;i<WIDTH;i++)
 {
  for(j=0;j<LENGTH;j++)
  {
  texImg[i][j][2]=(GLubyte)*(image+i*WIDTH*3+j*3);
  texImg[i][j][1]=(GLubyte)*(image+i*WIDTH*3+j*3+1);
  texImg[i][j][0]=(GLubyte)*(image+i*WIDTH*3+j*3+2);
  }
 }
}
蓝色的部分应该怎么改呢?
2.哪里有比较方便能找到bmp图的地方,感觉到处都是JPEG
谢谢



 
											





 
	    

 
	