如何在OpenGL中处理包含多个对象的动画?

时间:2014-07-26 13:17:20

标签: c++ opengl animation render

我需要创建一个OpenGL动画,它主要包含两个对象,一个由数百个顶点组成的简单对象(例如一个平面),以及一个包含数十万个顶点的非常复杂的对象(例如一个城市)。这两个对象都是不雅创建的。现在我需要将它们都放入动画中。例如,在动画中,我们从天空俯视城市,而飞机则在屏幕上飞行。由于城市模型非常复杂并且需要几分钟才能渲染,因此无法在每一帧渲染平面和城市。所以我的问题是,如何在OpenGL中独立渲染多个对象?我是否需要在每一帧渲染城市?我可以帮助修复"城市对象只是在每一帧都刷新飞机?

我读过红皮书等参考资料。也许我没有得到它,但他们似乎没有教导如何处理上述问题。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

  

由于城市模型非常复杂,需要几分钟才能渲染,

不到100万个顶点的分钟数?现代GPU每秒可以推出数亿个顶点!你应该摆脱那个瓶颈,而不是试图用分层渲染来覆盖它。

看看你的代码。是否致电glBeginglVertex?如果是这样,那就是你的问题所在。那些电话是懒散的。不要使用它们。使用顶点数组和顶点缓冲区对象可以很好地为GPU进行批处理。

  

所以我的问题是,如何在OpenGL中独立渲染多个对象?

技术上每个三角形独立于所有其他三角形呈现。您可能会考虑分层渲染。不要这样做,除非你知道你在做什么(你不是BTW)。