我有進行各種變換和設置爲glPushMatrix()和glPopMatrix()調用之間的顏色,基本上像這樣的代碼:的OpenGL:矩陣堆棧的功能
glLoadIdentity();
glPushMatrix();
glPushMatrix();
// C++ code to perform transformations
// C++ code to set colour
// C++ code to draw polygon
glPopMatrix();
// Other similar code "blocks" between calls to glPushMatrix() and glPopMatrix()
glPushMatrix();
// C++ code to perform transformations
// C++ code to set colour
// C++ code to draw polygon
glPopMatrix();
我的理解是一個單位矩陣是在開始時被推入堆棧,隨後被代碼中的每個連續的「塊」複製,轉換,呈現和彈出,並且彈出消除了來自先前轉換的所有效果。
但是,如果我註釋掉,設置在不是最後的塊中的任何塊的顏色代碼,該塊現在繼承如果施加的顏色,在最後的塊
這是有道理的設置顏色到整個堆棧,並因此保留對glPopMatrix()的調用。但是,在最後一個塊中創建的多邊形看起來是最後呈現的,因爲它位於所有其他多邊形之上 - 所以我沒有看到最終塊中設置的顏色如何應用於已經存在的多邊形被渲染。
問題:
1)什麼屬性/效果求生存,以glPopMatrix()的調用?
2)上述代碼中的操作順序是什麼?這些塊是以相反順序執行的,是以相反順序執行的每個塊中的代碼,還是兩者都執行?
我知道你是剛開始學習OpenGL的,但功能,如glPushMatrix,glLoadIdentity和glPopMatrix已被棄用,不再是核心OpenGL標準的一部分。請考慮學習'現代'的OpenGL。 – 2015-02-08 11:01:32
@ Sir.Tiddlesworth:謝謝。我知道這一點。正如我在OP中所說的,這是一個學校作業的起始代碼,我必須照原樣處理。 – Schemer 2015-02-08 14:41:24