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

执行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中描述的特定字库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值