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

4
我正在使用OpenGL ES制作2D游戏。由于正交投影使2D元素更加容易处理,因此我选择了它。现在我想创建一个简单的3D效果,比如让精灵绕Y轴旋转(类似CoverFlow)。如果我理解得正确,这在正交投影中无法实现。是否可能在不干扰其他代码的情况下完成它?比如在帧中间切换投影,将当前帧图像视为背景,并在背景上方绘制三维物体?
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渲染时,要小心深度缓冲区 - 你可能需要调整深度缓冲区设置,以确保物体正确绘制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接