计算机图形学输出图元_18_显示列表_2_执行OpenGL显示表
Posted heyuchang666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机图形学输出图元_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中描述的特定字库。
以上是关于计算机图形学输出图元_18_显示列表_2_执行OpenGL显示表的主要内容,如果未能解决你的问题,请参考以下文章
计算机图形学输出图元_18_显示列表_1_创建和命名OpenGL显示表
计算机图形学输出图元_18_显示列表_1_创建和命名OpenGL显示表
计算机图形学输出图元_18_显示列表_3_删除 OpenGL 显示表