4
我正在使用OpenGL ES进行2D游戏。我正在使用正交投影,因为它使2D的东西变得简单。现在我想创建一个简单的3D效果,比如绕Y轴旋转一个精灵(就像封面流)。如果我理解正确,那么在正投影中就不能这样做。有没有可能做到这一点,而不会搞乱其余的代码?像在框架中间切换投影,将当前帧图像作为背景并在背景上方绘制3D东西?使用OpenGL的2D游戏中的3D效果
我正在使用OpenGL ES进行2D游戏。我正在使用正交投影,因为它使2D的东西变得简单。现在我想创建一个简单的3D效果,比如绕Y轴旋转一个精灵(就像封面流)。如果我理解正确,那么在正投影中就不能这样做。有没有可能做到这一点,而不会搞乱其余的代码?像在框架中间切换投影,将当前帧图像作为背景并在背景上方绘制3D东西?使用OpenGL的2D游戏中的3D效果
是的,这是可能的:只需保存旧的投影矩阵,加载一个新的投影矩阵,并在完成后恢复旧投影矩阵。
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之间切换时的渲染,以便得到正确绘制的东西,你可能需要玩的深度缓冲设置。