2012-07-09 44 views
3

我有一個關於在OpenGL中刪除嵌套的顯示列表的問題。顯示列表可以簡單地通過創建:在OpenGL中刪除嵌套的顯示列表

glDeleteLists(myList, 1); 

現在的顯示列表也可以嵌套,使得每個:

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

如果我沒有記錯的話,這樣的列表可以簡單地通過刪除一個列表包含另一個或多個顯示列表。代碼的形式如下:

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(。)僅僅是父對象還是應該單獨刪除其子對象?在後一種情況下:訂單是否重要?

回答

3

glNewList是而不是當在一個COMPILE的中間時記錄。 It generates an error instead.

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

所以這些「嵌套」列表不存在。

+0

謝謝!有趣的是,因爲有太多的網站將嵌套顯示列表引用爲真實的東西,儘管它們似乎都沒有提供任何示例。即使在OpenGL網站上,它也在常見問題解答中提到: 「16.030顯示列表嵌套如何工作?被調用列表是否被複制到調用列表中?」 http://www.opengl.org/archives/resources/faq/technical/displaylist.htm 但是,答案也是非常不具描述性...... – Yellow 2012-08-06 10:08:46

+0

那麼,嵌套顯示列表是關於_calling_顯示列表中的顯示列表名單。 glNewList不記錄,但glCallLists是。 – Bahbar 2012-08-06 12:35:40