标签:
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。
计算机图形学(二)输出图元_18_显示列表_2_执行OpenGL显示表
标签:
原文地址:http://blog.csdn.net/heyuchang666/article/details/51554801