计算机图形学(二)输出图元_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中描述的特定字库。

计算机图形学(二)输出图元_18_显示列表_3_删除 OpenGL 显示表

删除 OpenGL 显示表参数startID给出最前面的显示表标识,而参数nLists给出要删除的显示表总数...
  • heyuchang666
  • heyuchang666
  • 2016年06月01日 21:18
  • 3174

计算机图形学(二)输出图元_18_显示列表_1_创建和命名OpenGL显示表

把对象描述成一个命名的语句序列(或任何其他的命令集)并存储起来既方便又高效。在OpenGL中使用称为显示表(display list)的结构可以做到这一点。一旦建立了显示表,就可以用不同的显示操作来多...
  • heyuchang666
  • heyuchang666
  • 2016年05月31日 19:58
  • 3138

计算机图形学(二)输出图元

对于每一类场景,要描述每一对象的结构及其在场景中的坐标位置。图形软件包中用来描述各种图形元素的函数称为图形输出原语(graphics output primitive ),或简称为图元(primiti...
  • heyuchang666
  • heyuchang666
  • 2016年04月14日 16:27
  • 1110

计算机图形学(二)输出图元_1_OpenGL画点函数

OpenGL中的坐标位置可以有二维、三维或四维。g1Vertex的后缀为2、3或4表示其坐标位置的维数。四维描述意味着齐次坐标(homogeneous-coordinate)表示,其中的齐次参数h(第...
  • heyuchang666
  • heyuchang666
  • 2016年04月14日 17:18
  • 2298

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

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

OpenGL(八) 显示列表

OpenGL在即时模式(Immediate Mode)下绘图时,程序中每条语句产生的图形对象被直接送进绘图流水线,在显示终端立即绘制出来。当需要在程序中多次绘制同一个复杂的图像对象时,这种即时模式会消...
  • dcrmg
  • dcrmg
  • 2016年11月11日 22:27
  • 1714

计算机图形学-实验3-掌握利用OpenGL函数进行鼠标、键盘操作,创建菜单

实验三:(2学时)   一、 实验目的: 掌握利用OpenGL函数进行鼠标、键盘操作,创建菜单等   二、 实验内容: 1、用鼠标拖动画直线,线段终点始终跟随鼠标移动;画线可以利用实验1或实验2中已经...
  • linyujie0927
  • linyujie0927
  • 2017年04月24日 13:57
  • 1530

计算机图形学(第四版)- 输出图元-读书笔记P37

[百日读书计划]Day2-计算机图形学(第四版)- 输出图元- 读书笔记P37
  • jinlin_23
  • jinlin_23
  • 2016年09月12日 20:27
  • 612

计算机图形学(二)输出图元_9_填充区图元

尽管有可能使用各种形状,但图形库一般不支持任意填充形状的描述。多数库函数要求填充区指定为多边形。由于多边形有线性边界,因而比其他填充形状更容易处理。另外,多数曲面可用一组适当的多边形面片来逼近,就如曲...
  • heyuchang666
  • heyuchang666
  • 2016年05月07日 14:32
  • 868

计算机图形学(二)输出图元_10_多边形填充区_2_分割凹多边形

接着按多边形边界顺序计算连续的边向量的叉积。如果有些叉积的z分量为正而另一些为负,则多边形为凹多边形;否则,多边形为凸多边形。这意味着不存在三个连续的顶点共线,即不存在连续两个边向量其叉积为0。如果所...
  • heyuchang666
  • heyuchang666
  • 2016年05月12日 11:45
  • 4289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机图形学(二)输出图元_18_显示列表_2_执行OpenGL显示表
举报原因:
原因补充:

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