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
谢谢