标题:[求助]关于读取位图纹理
取消只看楼主
eecchhoo
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-2-24
 问题点数:0 回复次数:1 
[求助]关于读取位图纹理

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

谢谢


搜索更多相关主题的帖子: 位图 纹理 
2006-03-13 15:51
eecchhoo
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-2-24
得分:0 
非常感谢
fseek(fp,54,SEEK_SET);
这里的54是什么意思
2006-03-13 16:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-50173-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.121451 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved