我想呈現具有特定旋轉的四邊形,此外,該四邊形在其下面呈現類似於二叉樹結構的「葉」四邊形。除了父母之外,每個孩子都有自己的輪換適用於他們。換句話說,如果根quad旋轉,整棵樹就會隨之旋轉,但每個子樹也可以單獨旋轉。所以,我的遞歸函數渲染看起來有點像這樣...將獨立旋轉應用於多個四邊形使用舊的OpenGL功能
RenderNode(Node current_node){
glRotate(current_node->rotation);
glBegin(GL_QUADS);
// supply 4 vertices and texture mapping
glEnd();
RenderNode(current_node->leftChild);
RenderNode(current_node->rightChild);
}
現在我希望比他們的父母我的孩子節點略有不同的旋轉,但不幸的是這是情況並非如此。在單個幀中調用glRotate()的次數越多,旋轉動畫的速度越快,但所有的板都保持在同一個平面上。似乎沒有任何四邊形正在被渲染,直到最後,並且最新的變換矩陣被應用到所有這些矩陣。作爲一個測試,我嘗試在每次轉換之前放置glPushMatrix(),並在每次調用glEnd()之後放置glPopMatrix(),這完全停止了所有板的旋轉。
有人能告訴我,這裏發生了什麼?
在你調用'glPushMatrix()'之前,你把'glIdentityMatrix()'放在了嗎? – 2013-03-17 13:34:05
不,只是試了一下,現在四邊形似乎沒有渲染。 – user2179327 2013-03-17 13:36:57
對不起,'glLoadIdentity()'是實際的呼叫... – 2013-03-17 13:37:49