我正在尝试让我的OpenGL应用程序工作,基本上在我开始使用场景图之前,每个对象都以一个推操作开始绘制,然后以一个弹出操作结束
现在我向汽车的基础部分(轮子)添加了两个子元素,并且我遇到了一些问题,在相对于基础汽车绘制它们时。如果我能贴上一些代码,我将展示绘制所有内容的调用,然后显示我的场景图调用来进行绘制,我希望这只是一个愚蠢的错误,因为目前我真的被卡住了。
void GameNode::Draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
car->Draw();
glPopMatrix();
for (int i = 0; i < MAXOBJECTS; i++)
{
glPushMatrix();
objects[i]->Draw();
glPopMatrix();
}
for (int i = 0; i < MAXBUILDINGS; i++)
{
glPushMatrix();
build[i]->Draw();
glPopMatrix();
}
glPushMatrix();
skyBox->Draw();
glPopMatrix();
glFlush();
glutSwapBuffers();
}
接着在我的“车-绘画”程序里,我有场景图。以下是相关代码:
glPushMatrix();
object->Draw();
glPushMatrix();
glPopMatrix();
if(left != nullptr)
{
glPushMatrix();
glPopMatrix();
left->PreOrderDraw();
}
if(right != nullptr)
{
right->PreOrderDraw();
}
glPopMatrix();
所以,这基本上是将我的车轮设置在汽车底部,但当它们的位置相对于应该有偏移量时,并没有相对于底部设置它们。