【问题标题】:3D effects in a 2D game using OpenGL使用 OpenGL 的 2D 游戏中的 3D 效果
【发布时间】:2008-12-02 20:28:44
【问题描述】:

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

【问题讨论】:

    标签: opengl-es 2d projection


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 2011-04-12
      • 1970-01-01
      • 2016-06-22
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多