我正在使用 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/