【发布时间】:2008-12-02 20:28:44
【问题描述】:
我正在使用 OpenGL ES 开发 2D 游戏。我正在使用正交投影,因为它使 2D 的东西变得容易。现在我想创建一个简单的 3D 效果,比如围绕 Y 轴旋转一个精灵(类似于封面流)。如果我理解正确,这不能在正射投影中完成。是否可以在不弄乱其余代码的情况下做到这一点?就像在帧中间切换投影,把当前帧图像当作背景,在背景之上绘制3D东西?
【问题讨论】:
标签: opengl-es 2d projection
我正在使用 OpenGL ES 开发 2D 游戏。我正在使用正交投影,因为它使 2D 的东西变得容易。现在我想创建一个简单的 3D 效果,比如围绕 Y 轴旋转一个精灵(类似于封面流)。如果我理解正确,这不能在正射投影中完成。是否可以在不弄乱其余代码的情况下做到这一点?就像在帧中间切换投影,把当前帧图像当作背景,在背景之上绘制3D东西?
【问题讨论】:
标签: opengl-es 2d projection
是的,这是可能的:只需保存旧的投影矩阵,加载一个新的,完成后恢复旧的。
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 渲染之间切换时,您可能需要调整深度缓冲区设置才能正确绘制。
【讨论】: