计算机图形学(二)输出图元_18_显示列表_2_执行OpenGL显示表

原创 2016年06月01日 11:47:47
执行OpenGL显示表
采用下面的语句可执行一个显示表:
glCallList (listID);
下面的程序段用于创建并执行一个显示表。我们先在xy平面上建立以(200,200)为中心坐标、半径为150的圆周上六个等距顶点描述的规则六边形的显示表。然而调用glCallList来显示该六边形。
const double TWO_PI = 6.2831853;
 GLuint regHex;
 GLdouble theta;
 GLint x, y, k;
 /* Set up a display list for a regular hexagon.
  * Vertices for the hexagon are six equally spaced
  * points around the circumference of a circle.
  */
 regHex = glGenLists (1); // Get an identifier for the display list.
 glNewList (regHex, GL_COMPILE);
    glBegin (GL_POLYGON);
      for (k = 0; k < 6; k++) {
         theta = TWO_PI * k / 6.0;
         x = 200 + 150 * cos (theta);
         y = 200 + 150 * sin (theta);
         glVertex2i (x, y);
   }
 glEnd ( );
 glEndList ();
 glCallList (regHex);
使用下列两条语句可以执行多个显示表:
 glListBase (offsetValue);
 glCallLists (nLists, arrayDataType, listIDArray);
要执行的显示表数量赋给参数nLists,而参数listIDArray显示表标识的数组一般而言,listIDArray可包含任意多的元素,而无效的标识会被忽略。同样,listIDArray中的元素可指定为多种数据格式,而参数arrayDataType用来指出数据类型,例如GL_BYTE,GL_INT,GL_FLOAT, GL_3_BYTES或GL_4_ BYTES。显示表标识通过将listIDArray中一个元素的值与offsetValue的整数值相加而得。offsetValue的默认值为0。
    这种指定要执行的一串显示表的机制使我们能建立一组相关的显示表,其标识用符号名或编码形成。一个典型的例子是一个字库集,其中每一显示表标识是一个字符的ASCII值。在定义几个字库时,使用glListBase函数中的offsetVaiue来获得数组listIDArray中描述的特定字库。

相关文章推荐

二次曲面的绘制函数(二)

三.绘制二次曲面步骤 1.绘制二次曲面首先要创建二次曲面对象。其函数名为gluNewQuadric,原型GLUquadricObj* gluNewQuadric(void) GLUquadricO...

OpenGL分格化和二次方程表面

原文点击打开链接 分格化 opengl只能对凸多边形进行渲染,所以对于凹多边形和有空洞的多边形需要进行分格化处理 步骤: 1.gluNewTess()创建一个分格化对象 2. 调用几次glu...
  • h_h_w
  • h_h_w
  • 2013年07月24日 15:36
  • 651

计算机图形学(二)输出图元_2_ OpenGL画线函数

图形软件包一般都提供一个描述一条或多条直线段的函数,其中每一直线段由两个端点坐标位置定义。在OpenGL中,和选择一个点位置一样,我们使用glVertex函数选择单个端点的坐标位置。我们使用一对glB...

计算机图形学(二)输出图元_14_OpenGL像素阵列函数_2_像素图函数

将用彩色阵列定义的图案应用到一块帧缓存的像素位置。其中的width和height也分别给出像素位图的列数和行数(阵列pixMap )。参数dataFormat用一个OpenGL常量赋值,指出如何为阵列...

计算机图形学(二)输出图元_6_OpenGL曲线函数_2_中点画圆算法

如同光栅画线算法,我们在每个步中以单位间隔取样并确定离指定圆最近的像素位置。对于给定半径r和屏幕中心(xc,yc),可以先使用算法计算圆心在坐标原点(0, 0)的圆的像素位置,然后通过将xc加到x且y...

计算机图形学(二)输出图元_6_OpenGL曲线函数_3_椭圆生成算法

通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 )。如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,...

计算机图形学(二)输出图元_11_OpenGL多边形填充区函数(下)

多数图形软件包使用逼近平面片来显示曲面。这是因为平面方程是线性的,而处理线性方程比二次或其他类曲线方程快得多。因此OpenGL和其他图形软件包提供多边形图元来实施曲面的逼近。对象用多边形网络来建模,而...

计算机图形学(二)输出图元_14_OpenGL像素阵列函数_1_位图函数

OpenGL中有两个函数可用于定义矩形阵列的形状或图案。一个是位图,另一个是像素图。OpenGL也提供若干的函数用于存储、复制及管理像素值阵列。函数中的参数width和height分别给出阵列bitS...

计算机图形学(二)输出图元_6_OpenGL曲线函数_5_其他曲线

许多曲线函数在对象建模、动画轨迹的描述、数据和函数的图形化以及其他图形应用中是十分有用的。常见的曲线包括圆锥曲线、三角和指数函数、概率分布、通用多项式和样条函数。这些曲线的显示可采用类似于前面讨论的圆...

计算机图形学(二)输出图元_11_OpenGL多边形填充区函数(上)

描述填充多边形的OpenGL过程与描述点和折线类似,但有一个例外。函数glVertex用来输入多边形的一个顶点坐标,而完整的多边形用从glBegin到glEnd之间的一组顶点来描述。但有另外一个函数可...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机图形学(二)输出图元_18_显示列表_2_执行OpenGL显示表
举报原因:
原因补充:

(最多只允许输入30个字)