3

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(.) するだけで十分ですか、それともその子も個別に削除する必要がありますか? 後者の場合: 順序は重要ですか?

4

1 に答える 1

3

COMPILE の途中では、glNewList は記録されません。代わりにエラーが発生します。

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

したがって、これらの「ネストされた」リストは存在しません。

于 2012-07-09T13:44:46.970 に答える