回 帖 发 新 帖 刷新版面

主题:[投票]OPENGL显示列表

OPENGL显示列表是怎么回事,怎么样才能让它加速软件的运行呢
有人能举个OPENGL 创建和调用显示列表来 
实现画一个圆,一个三角形,一个长方形吗
还要显示图形的放大缩小功能 二维的就可以了
谢谢

回复列表 (共2个回复)

沙发

= =;
还是自己找例子比较快吧!~

板凳

在OpenGL中适当的使用显示列表可以提高图像的显示速度,因为显示列表是将它中间的画图代码提前编译,在需要的时候调用执行。也就是说你用十条命令编写的一个显示图像的命令被一条显示列表调用的命令代替。一般在VC中显示列表的调用都用放在初始化中。但是显示列表的调用也是需要花费不小的时钟的,如果你仅仅是要画一个三角形,或者四边形,那么利用显示列表肯定要比直接调用glBegin(GL_TRIANGLES)  或glBegin(GL_QUADS) 花费的时间长,除非你在上述的命令中包含了上百条的glVertex.画显示列表的使用方法和顺序:
1.产生显示列表;
glNewList(1, GL_COMPILE);    //产生显示列表,列表号为1,只进行编译,不执行。
  glBegin(GL_TRIANGLES);
    ...//画你的三角形
  glEnd();
glEndList();

glNewList(2, GL_COMPILE);   //产生显示列表,列表号为2,只编译,不执行
  glBegin(GL_QUADS);
  ... //画你的四边形
  glEnd();
glEndList();

2.在需要显示图像的时候调用显示列表显示
glCallList(1);              //调用显示列表1,显示三角形

glCallList(2);              //调用显示列表2,显示四边形

至于你说的放大缩小图形的功能,我不记得在在显示列表中加入glScalef()能否实现缩放。我想你可以在glScalef()之后调用glCallList()来实现缩放。一般在缩放之前还要调用glPushMatrix()和glPopMatrix()来保存当前矩阵。具体的用法可以参考一下相关书籍,或到msdn上查找,都能查到。(以上代码是现写的,好久没用了,仅供参考)

我来回复

您尚未登录,请登录后再回复。点此登录或注册