这节我们将读取几个图片,生成一个纹理集,然后让程序循环显示图片。
为了方便,我直接把图片的数量和每个图片的名字保存在一个txt文档里面,方便程序地读取。
如:
在init函数中,打开data.txt,读取图片的数量和图片的名字,然后调用LoadBitmap函数,把所生成的纹理保存在一个容器vector中,然后在Update函数中,控制显示的图片id,从而达到循环显示。
具体的实现很简单,所以就不多说了~
vector<unsigned int> V_ID; //用来保存生成的纹理id
int now,cnt; //now是当前所使用的纹理在vector中的下标
//cnt是用来计时的变量
void Update()
{
cnt++;
if (cnt >= 100) //当cnt加到的时候,换下一张图片
{
now++;
now%=V_ID.size(); //保证now值的正确性
cnt=0; //将cnt值置,开始下一个图片的显示
}
glutPostRedisplay();
}void init()
{
int n,i;
char str[100],file[100];
V_ID.clear(); //清空容器
FILE *fp;
fp=fopen("data/data.txt","r");
fscanf(fp,"%d",&n);
while (n--)
{
fscanf(fp,"%s",str);
sprintf(file,"data/%s",str);
i=LoadBitmap(file);
if (i == -1)