`
落花虽有意
  • 浏览: 185656 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

显示列表

阅读更多

OpenGL 显示列表是一组预先存储并编译过的的 opengl 命令,它可以在任何地方被调用并按顺序立即执行。

 

说说几个相关的函数:

 

    1,显示列表的创建:

        void  glNewList(GLuint list , GLenum mode);    

                第一个参数为自己指定的显示列表的序号,调用时要用到,如果序号指定重复则后面的显示列表将覆盖前面的

                第二个参数表示显示列表被处理的方式,有 编译 和 便宜且执行 两种,分别对应常量 GL_COMPILE  和 

                            GL_COMPILE_AND_EXECUTE

        void  glEndList();

        你所要进行的操作则定义在上面两个函数之间,如下(不过没什么实用):

	glNewList(1 , GL_COMPILE);
		glBegin(GL_LINES);
			glVertex2f(-0.5f , -0.5f);
			glVertex2f(0.5f , 0.5f);
		glEnd();
	glEndList();

    

    2,单个显示列表的执行:

        glCallList(GLuint list);

                参数即为定义显示列表时所指定的序号,如:glCallList(1);

 

    3,显示列表的管理:

        GLuint glGenLists(GLsizei range);

                如前说过的,因为显示列表是由其序号来识别的,如果定义了一个相同序号的显示列表,则后定义的显示列表会代替已存在的显示列表,这当然不是我们想要的。为了避免这一点,可以用上面这个函数来创建一个或多个没有用过的显示列表。

                该函数创建 range 个连续且未被占用的显示列表的序号,返回一个整数,该整数就是这 range 个连续显示列表序号中的最小序号。如若返回的是 n , 则创建的显示列表序号为 n , n+1 , ……, n + range -1 。

	GLint index = glGenLists(1);
	glNewList(index , GL_COMPILE);
		// 其他代码
	glEndList();

 

        GLboolean  glIsList(GLuint list);

                该函数用来查询指定序号的显示列表是否已经被占用

        void  glDeleteLists(GLuint  list  ,  GLsizei  range);

                显示列表既然能被创建那么一定也能被删除,上面的函数用来删除序号从 list 起的连续 range 个显示列表

   

    4,多个显示列表的执行:

        void  glListBase(GLuint  base);

                该函数用来指定将要执行的多个显示列表的序号基数,将与下面说的函数的相关参数进行配合。参数 base 可以为任何整数,初始为 0

        void  glCallLists(GLsizei  n , GLenum  type , const  GLvoid  *  lists);

                该函数执行一个显示列表序列。其中,参数 n 表示将要执行的显示列表的个数;参数 type 表示 第三个参数 lists 的类型,如: GL_BYTE , GL_UNSIGNED_INT 等等;第三个参数 lists 是一个数组地址,记录一系列的偏移量,前一个函数指定的显示列表基数加上偏移量就是将要执行的显示列表的序号。如下:

	GLint index = glGenLists(4);
	glListBase(index);

	glNewList(index , GL_COMPILE);
		// 其他代码
	glEndList();

	glNewList(index + 1 , GL_COMPILE);
		// 其他代码
	glEndList();

	glNewList(index + 2, GL_COMPILE);
		// 其他代码
	glEndList();

	glNewList(index + 3, GL_COMPILE);
		// 其他代码
	glEndList();

	GLbyte bArray[4] = {0 , 1 , 2 , 3};
	glCallLists(4 , GL_BYTE , bArray);

 

分享到:
评论

相关推荐

    OpenGL 多级显示列表示例代码

    多级显示列表(Display Lists)是OpenGL中的一个重要概念,它允许开发者预先编译和存储一系列图形命令,以便在需要时高效地重用。在本示例代码中,我们将探讨如何使用OpenGL创建和管理多级显示列表,以及它们如何...

    opengl显示列表使用

    OpenGL显示列表是OpenGL编程中一个重要的优化工具,它允许开发者预先编译图形绘制命令,以提高3D场景的渲染效率。在《OpenGL显示列表使用》的主题中,我们将深入探讨显示列表的工作原理、创建方法以及如何利用它们来...

    OpenGL入门学习之八——使用显示列表.pdf

    ### OpenGL入门学习之八——使用显示列表:深入解析与应用 #### 一、OpenGL与显示列表的概念 OpenGL,即Open Graphics Library,是一个跨语言、跨平台的应用程序接口(API),用于渲染2D、3D矢量图形。它是计算机...

    OpenGL 显示列表

    OpenGL显示列表是OpenGL编程中的一个重要概念,用于优化图形渲染性能。在计算机图形学实验中,尤其是在涉及大量重复绘制相同或类似对象的场景下,显示列表能够显著提高效率。本实验旨在深入理解显示列表的工作原理...

    Nehe第12课显示列表

    在Nehe教程系列中,第12课讲解了如何利用OpenGL的显示列表(Display List)功能,这是一项提高性能和代码可读性的关键技术。本篇文章将深入探讨显示列表的概念、创建与使用方法,以及它们在实际应用中的优势。 首先...

    显示列表的使用

    用显示列表显示多个三棱锥,最大限度地提高应用程序的性能。

    JOGL显示列表例子

    "JOGL显示列表例子"是一个关于如何在Java环境中利用JOGL实现3D场景中显示列表操作的教学案例。 显示列表是OpenGL提供的一种优化机制,它可以将一系列OpenGL命令预先存储起来,形成一个列表,当需要执行这些命令时,...

    易语言自动循环显示列表项目

    在“易语言自动循环显示列表项目”中,我们主要关注的是如何使用易语言来实现列表项目的自动循环显示功能。这个功能在很多应用中都有所体现,比如在滚动公告、实时数据更新或者日志显示等场景。 首先,我们需要了解...

    opengl.rar_opengl 显示列表

    在“opengl.rar”这个压缩包中,重点是讲解了OpenGL的显示列表特性,这是OpenGL提高性能和简化代码的一个重要概念。在VC++环境下,OpenGL通常与MFC(Microsoft Foundation Classes)库结合使用,为Windows开发提供...

    查询结果显示列表查询结果显示列表

    查询结果显示列表查询结果显示列表查询结果显示列表

    display-list.rar_list_opengl_opengl list_opengl 显示列表

    OpenGL显示列表是OpenGL编程中一个重要的优化技术,用于加速图形绘制过程。在计算机图形学领域,尤其是在游戏开发、科学可视化和交互式应用中,高效渲染是至关重要的。本篇文章将详细探讨显示列表的功能、原理以及...

    第七站:显示列表(VS2015).zip

    对于复杂的图形,有成千上万个顶点,每次刷新屏幕都于重新计算顶点,让CPU执行重复的工作,浪费了CPU...如果把计算好的结果存放到显示列表中,需要刷新屏幕时,只需要把数据刷新到显卡里就可以了,节省CPU计算资源。

    WPF中listview显示列表的删除和显示

    本教程将详细讲解如何在WPF应用中使用ListView来显示列表,以及添加删除和保存功能。 首先,让我们理解ListView的基本用法。ListView是通过ItemsControl的派生控件实现的,它可以用来显示数据源中的项目集合。通常...

    ASP.NET项目实训:“新闻发布系统”新闻浏览--新闻显示列表.ppt

    * * * * * * * * * * * * “新闻发布系统”新闻浏览 --新闻显示列表 情景分析 由于新闻在首页按照分类进行了显示,这样使得新闻显示和管理更加规范。对于每一类新闻,我们可能需要浏览更多的新闻,这样就需要有一个...

    鼠标滑动显示列表,以及文本输入框显示键盘

    该文件为鼠标滑动按钮,下方展示列表效果;以及鼠标移出,隐藏列表效果; 文本框有光标显示键盘,无光标的时候隐藏键盘

    展讯平台显示列表mrapp压缩包

    显示列表通常是指用户在手机主屏幕上看到的应用程序快捷方式或者在应用抽屉中的应用列表,因此,这个压缩包可能包含用于优化或自定义展讯平台设备显示列表的文件。 描述中提到,这个压缩包是为那些只预装了QQ软件的...

    OpenGL键盘控制桌子的显示及显示列表显示

    桌子上放两层兔子,每层9个,铺满整个桌面 键盘控制:1控制是否用显示列表绘制,并比较两种...增加键盘按键来切换显示列表和非显示列表绘制方式,通过动画以及对FPS的理解和分析,理解显示列表对程序绘制性能的影响。

    易语言源码自动循环显示列表项目.7z

    在这个“易语言源码自动循环显示列表项目”中,我们可以探索如何使用易语言来实现一个功能,即在列表框中自动循环显示项目。这个功能常见于各种界面应用,如滚动新闻、公告或菜单项的展示。 首先,我们需要了解...

    热点开启和连接到wifi显示列表

    包括热点开启和连接到wifi显示列表、测试wifi信号的强弱

    易语言源码自动循环显示列表项目.rar

    易语言源码自动循环显示列表项目.rar 易语言源码自动循环显示列表项目.rar 易语言源码自动循环显示列表项目.rar 易语言源码自动循环显示列表项目.rar 易语言源码自动循环显示列表项目.rar 易语言源码自动循环...

Global site tag (gtag.js) - Google Analytics