游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4369|回复: 3

(求助)关于glCallLists的问题

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-6-15 14:46:00 | 显示全部楼层 |阅读模式
我想做一个雪景,雪花我选用纹理映射来做。因为想要多种雪花,选用了一个64 x 64的图,上面有16个16 x 16的雪花。我的想法是用显示列表把每个雪花分割,就向NEHE里面介绍的那个字符一样。显示的时候先选择雪花位置和旋转角度,然后用glCallLists()显示贴图。
GLvoid BuildSnow(GLuint texture)
{
        float        cx;                         // 雪花图的X坐标
        float        cy;                           // 雪花图的Y坐标

        base = glGenLists(16);                        // 创建16个显示列表
        glBindTexture(GL_TEXTURE_2D, texture);                        // 绑定纹理

        for (int i = 0; i < 16; i++)                        // 循环16个显示列表
        {   
                cx=float(i % 4) / 4.0f;                当前雪花的X坐标
                cy=float(i / 4) / 4.0f;        // 当前雪花的Y坐标

                glNewList(base+i,GL_COMPILE);                //开始创建显示列表
                        glBegin(GL_QUADS);                // 使用四边形显示每一个雪花

                                glTexCoord2f(cx,1-cy-0.0625f);        // 左下角的纹理坐标
                                glVertex2i(0,0);                // 左下角的坐标

                                glTexCoord2f(cx+0.0625f,1-cy-0.0625f);        // 右下角的纹理坐标
                                glVertex2i(16,0);        // 右下角的坐标

                                glTexCoord2f(cx+0.0625f,1-cy);        // 右上角的纹理坐标
                                glVertex2i(16,16);                // 右上角的坐标

                                glTexCoord2f(cx,1-cy);  // 左上角的纹理坐标
                                glVertex2i(0,16);        // 左上角的坐标
                        glEnd();                // 四边形雪花绘制完成
                glEndList();        // 字符显示列表结束
        }
}

调用的时候是:
                glTranslatef(snow.x,snow.y,snow.z);        // 绘制雪花
                glRotatef((snow.spinx),1.0f,0.0f,0.0f);               
                     glRotatef((snow.spinx),1.0f,0.0f,0.0f);                               
                glRotatef((snow.spinz),0.0f,0.0f,1.0f);

                BuildSnow(SnowTex);
                     glListBase(base);
                glCallLists(1, GL_BYTE,??);
上面的那个该写什么?我对第三个系数不明白。。
这样能运行出正确的结果么?


另外,请问谁能帮我把下面这个房子模型的文件从MAX格式转化为3DS格式么?我急用!!

最后一个问题,所有3DS文件的格式都是一样的么?我用3DS MAX看那个模型,怎么感觉里面都是矩形的,而不是三角形的面呢?
我的邮箱chrisy26@163.com
先谢谢大家了 [em3]

sf_2008615144556.zip

40.31 KB, 下载次数:

4

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2008-6-17 19:28:00 | 显示全部楼层

Re:(求助)关于glCallLists的问题

第三个参数是列表的编号,你创建时用base做基数建立了16个,这里就可以用base到base+15这16个变量来引用.

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2008-6-19 17:55:00 | 显示全部楼层

Re: (求助)关于glCallLists的问题

[em5]glCallList需要3个参数吗?
[em8]我一直以为只需要1个参数。
[em6]我太外行了。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2008-6-19 17:59:00 | 显示全部楼层

Re:(求助)关于glCallLists的问题

哦,
原来是glCallLists啊
没用过
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 05:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表