《OpelGL编程指南第七版》第七章:显示列表(笔记)

《显示列表》

标签(空格分隔): OpenGL编程指南第七版


在OpenGL中,本章所有技术和功能都被废弃删除
显示列表是一组存储在一起的OpenGL函数,可以在以后执行。

7.1为什么要使用显示列表

可以提高性能。当我们在本地机器上运行OpenGL时,可以把经常使用一些函数存储在显示列表中,以提高程序的性能。
显示列表只能包含OpenGL函数,且显示列表中的值不能在以后进行修改。

7.3 显示列表的设计哲学

《OpelGL编程指南第七版》第七章:显示列表(笔记)
《OpelGL编程指南第七版》第七章:显示列表(笔记)

7.4 创建和执行显示列表

7.4.1 命名和创建显示列表

GLuint glGenLists(GLsizei range);
《OpelGL编程指南第七版》第七章:显示列表(笔记)
如:GLuint ListName = glGenLists(1);

void glNewList(GLuint list, GLenum mode);
《OpelGL编程指南第七版》第七章:显示列表(笔记)
void glEndList(void)

7.4.2 存储在显示列表里的是什么

在创建显示列表时,只有表达式的值存储在显示列表中。如果数组中的值以后发生了改变,显示列表中的值并不会发生改变。如:
《OpelGL编程指南第七版》第七章:显示列表(笔记)
显示列表中存储的颜色仍然是创建时的黑色。不会变为红色。
《OpelGL编程指南第七版》第七章:显示列表(笔记)

7.4.3 执行显示列表

void glCallList(GLuint list);

7.4.4 层次式显示列表

显示列表定义中调用其他的显示列表,如:
《OpelGL编程指南第七版》第七章:显示列表(笔记)
但显示列表的嵌套层次具有限制,限制至少为64。
创建与原有的显示列表具有相同索引的显示列表将自动删除原先的那个显示列表。

7.4.5 管理显示列表索引

GLboolean glIsList(GLuint list);
void glDeleteLists(GLuint list ,GLsizei range);
《OpelGL编程指南第七版》第七章:显示列表(笔记)

7.5 执行多个显示列表

void glListBase(GLuint base);
《OpelGL编程指南第七版》第七章:显示列表(笔记)
void glCallLists(GLsizei n, GLenum type, GLvoid* lists);
《OpelGL编程指南第七版》第七章:显示列表(笔记)
《OpelGL编程指南第七版》第七章:显示列表(笔记)

7.6 用显示列表管理状态变量

《OpelGL编程指南第七版》第七章:显示列表(笔记)
《OpelGL编程指南第七版》第七章:显示列表(笔记)

封装模式修改
《OpelGL编程指南第七版》第七章:显示列表(笔记)