我正在使用 OpenGL ES 开发 2D 游戏。我正在使用正交投影,因为它使 2D 的东西变得容易。现在我想创建一个简单的 3D 效果,比如围绕 Y 轴旋转一个精灵(类似于封面流)。如果我理解正确,这不能在正射投影中完成。是否可以在不弄乱其余代码的情况下做到这一点?就像在帧中间切换投影,把当前帧图像当作背景,在背景之上绘制3D的东西?
zoul
问问题
2814 次
1 回答
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 渲染之间切换时,您可能需要使用深度缓冲区设置才能正确绘制。
于 2008-12-02T20:33:05.773 回答