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

标签 opengl-es 2d projection

我正在使用 OpenGL ES 开发 2D 游戏。我使用正交投影,因为它使 2D 内容变得容易。现在我想创建一个简单的 3D 效果,比如围绕 Y 轴旋转 Sprite (类似于覆盖流)。如果我理解正确的话,这不能在正交投影中完成。是否可以在不弄乱其余代码的情况下做到这一点?就像在帧中间切换投影一样,将当前帧图像作为背景,在背景上方绘制 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 渲染之间切换时,您可能需要调整深度缓冲区设置,以便正确绘制内容。

关于opengl-es - 使用 OpenGL 在 2D 游戏中实现 3D 效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335317/

相关文章:

android - 某些手机​​上未加载纹理

iPhone openGLES 性能调优

android - AdMob 广告未在 Android SDL 应用中正确显示

ios - OpenGL 矩阵变换的一场革命

javascript - JQuery/javascript 将 div 放置在父 div 的任意位置

math - CGAL 3.4 : How do I get end vertex co-ordinates from a Finite_edges_iterator?

LibGdx 弓箭游戏物理

3d - 如何有条不紊地选择透视投影的近剪裁平面距离?

javascript - Threejs Vector3 取消投影相机

opengl - 透视划分解释?