2008-12-02 81 views
4

我正在使用OpenGL ES进行2D游戏。我正在使用正交投影,因为它使2D的东西变得简单。现在我想创建一个简单的3D效果,比如绕Y轴旋转一个精灵(就像封面流)。如果我理解正确,那么在正投影中就不能这样做。有没有可能做到这一点,而不会搞乱其余的代码?像在框架中间切换投影,将当前帧图像作为背景并在背景上方绘制3D东西?使用OpenGL的2D游戏中的3D效果

回答

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之间切换时的渲染,以便得到正确绘制的东西,你可能需要玩的深度缓冲设置。