使用OpenGL在2D游戏中的3D效果

时间:2008-12-02 20:28:45

标签: opengl-es 2d projection

我正在使用OpenGL ES进行2D游戏。我正在使用正交投影,因为它使2D东西变得容易。现在我想创建一个简单的3D效果,比如围绕Y轴旋转精灵(类似于封面流程)。如果我理解正确,那么在正投影中就无法做到这一点。是否可以在不搞乱其余代码的情况下完成它?就像在框架中间切换投影一样,将当前帧图像视为背景并在背景上方绘制3D内容?

1 个答案:

答案 0 :(得分:6)

是的,这是可能的:只需保存旧的投影矩阵,加载一个新的矩阵,并在完成后恢复旧的投影矩阵。

void DrawScene()
{
  Draw2DStuff();

  glMatrixMode(GL_PROJECTION);
  glPushMatrix();  // Save old projection matrix
  gluPerspective(...);  // Load new projection matrix

  Draw3DStuff();

  glMatrixMode(GL_PROJECTION);
  glPopMatrix();  // Restore old projection matrix
}

请注意深度缓冲区 - 在2D和3D渲染之间切换时,您可能需要使用深度缓冲设置,以便正确绘制内容。