删除OpenGL中的嵌套显示列表

时间:2012-07-09 10:36:09

标签: c++ opengl

我有一个关于在OpenGL中删除嵌套显示列表的问题。可以通过以下方式简单地创建显示列表:

    GLuint myList = glGenLists(1);
    glNewList(myList, GL_COMPILE);
    // ...code for objects in list...
    glEndList();

如果我没弄错的话,这样的清单就会被删除:

    glDeleteLists(myList, 1);

现在,显示列表也可以嵌套,这样每个列表都包含另一个或多个显示列表。代码的格式为:

    GLuint parentList = glGenLists(1);      // ID = 1
    glNewList(parentList , GL_COMPILE);

    GLuint childList1 = glGenLists(1);      // ID = 2
    glNewList(childList1 , GL_COMPILE); 
    // .. code for some objects here
    glEndList();

    GLuint childList2 = glGenLists(1);      // ID = 3
    glNewList(childList2, GL_COMPILE); 
    // .. code for more objects here
    glEndList();

    glEndList();

但我的问题是,如何删除这样的嵌套列表?仅仅glDeleteList(。)是否足够,或者也应该单独删除其子项?在后一种情况下:订单是否重要?

1 个答案:

答案 0 :(得分:3)

glNewList在COMPILE中间时记录。 It generates an error instead.

GL_INVALID_OPERATION is generated if [...] glNewList is called 
while a display list is being defined

所以这些“嵌套”列表不存在。