我想渲染一个具有一定旋转的四边形,此外,这个四边形在其下方呈现“叶子”四边形,类似于二叉树结构。除了父母的轮换之外,每个孩子都有自己的轮换应用。换句话说,如果根四边形旋转,整个树也随之旋转,但每个子树也可以单独旋转。所以我的递归渲染函数看起来有点像这样......
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(),这完全停止了所有板的旋转。
有人可以告诉我这里发生了什么吗?