如何实现移动场景

How can I implement a moving scene

本文关键字:移动 实现 何实现      更新时间:2023-10-16

我想在OpenGL中实现一个移动场景。

场景描述:地形是静态的,但所有其他对象都朝着-x轴移动。

地形是xz平面中的一个平面。

我有一个网格,它会在地形上的几个地方出现很多次
但所有这些都将以特定的速度向-x轴移动。

我想到了这些可能的实现:

  1. 只创建一个网格并多次显示(我更喜欢这个)
  2. 创建多个网格,将它们保存到向量中,然后移动它们。它们离开视口后,可能会摧毁它们

第一种方法的问题是,我将创建具有x%可能性的网格,因此这需要不知道所需的网格数量。那么我该如何展示它们呢?

例如,如果我知道我会创建3个网格,我会这样做:

glPushMatrix();
glTranslatef(mesh1 position + speed)
mesh.dray();
glPopMatrix();
glPushMatrix();
glTranslatef(mesh2 position + speed)
mesh.dray();
glPopMatrix();
glPushMatrix();
glTranslatef(mesh3 position + speed)
mesh.dray();
glPopMatrix();

现在,如果只要动画继续,我们就需要创建网格,我该如何实现呢?其次,离开视口的网格呢?它们还会继续存在吗?

如果您打算在纯openGL中进行编码,那么这个答案是无用的。

然而,如果你愿意尝试第三方图书馆,请尝试www.ogre3d.org——我会发现这在ogre中真的很容易做到。

事实上,如果我没记错的话,"中级教程一"的挑战应该解决openGL问题的等效食人魔概念。

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Intermediate+教程+1&structure=教程

(本应将此作为注释,最近才激活!)

使用选项2。只是不要删除它们,只需将它们移回原处,然后再次使用。比如,如果我想数羊。。。我不会创建1000000个绵羊网,我会创建1或2个,然后在使用它们之间旋转。