4

我正在使用 OpenGL ES 开发 2D 游戏。我正在使用正交投影,因为它使 2D 的东西变得容易。现在我想创建一个简单的 3D 效果,比如围绕 Y 轴旋转一个精灵(类似于封面流)。如果我理解正确,这不能在正射投影中完成。是否可以在不弄乱其余代码的情况下做到这一点?就像在帧中间切换投影,把当前帧图像当作背景,在背景之上绘制3D的东西?

4

1 回答 1

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 渲染之间切换时,您可能需要使用深度缓冲区设置才能正确绘制。

于 2008-12-02T20:33:05.773 回答