Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在OpenGL中处理包含多个对象的动画?_C++_Opengl_Animation_Render - Fatal编程技术网

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

C++ 如何在OpenGL中处理包含多个对象的动画?,c++,opengl,animation,render,C++,Opengl,Animation,Render,我需要创建一个OpenGL动画,它主要包含两个对象,一个简单的对象,例如由数百个顶点组成的平面,一个非常复杂的对象,例如包含数十万个顶点的城市。这两个物体都是不雅地创造出来的。现在我需要把它们都放到动画中。例如,在动画中,当一架飞机在屏幕上飞行时,我们从天空俯视城市。由于城市模型非常复杂,渲染需要几分钟,因此不可能在每一帧同时渲染平面和城市。所以我的问题是,如何在OpenGL中独立地渲染多个对象?我需要在每一帧渲染城市吗?我可以修复城市对象并在每一帧刷新平面吗 我读过《红皮书》等参考资料。也许我

我需要创建一个OpenGL动画,它主要包含两个对象,一个简单的对象,例如由数百个顶点组成的平面,一个非常复杂的对象,例如包含数十万个顶点的城市。这两个物体都是不雅地创造出来的。现在我需要把它们都放到动画中。例如,在动画中,当一架飞机在屏幕上飞行时,我们从天空俯视城市。由于城市模型非常复杂,渲染需要几分钟,因此不可能在每一帧同时渲染平面和城市。所以我的问题是,如何在OpenGL中独立地渲染多个对象?我需要在每一帧渲染城市吗?我可以修复城市对象并在每一帧刷新平面吗

我读过《红皮书》等参考资料。也许我不明白,但他们似乎没有教我如何处理上述问题。有人能帮我吗

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

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

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

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


从技术上讲,每个三角形都独立于所有其他三角形进行渲染。您可能会考虑分层渲染。不要这样做,除非你知道你在做什么。顺便说一句,你不是。

谢谢datenwolf!是的,我使用了glBegin和glVertex。我不熟悉顶点数组和顶点缓冲区对象,也不熟悉分层渲染。你能推荐一些参考资料吗?@Aaron:分层渲染可能是一个太高级的主题,你现在无法解决;您必须了解像OpenGL实现这样的reasterizer的所有方面,才能有效地利用它。自1996年以来,顶点数组是OpenGL绘图的推荐方式;任何仍然使用glBegin/glVertex的教程都不值得阅读。这是目前最好的OpenGL教程:谢谢!在这个实践中,我主要遵循红皮书第七版上的样本。我将按照你的建议调查VAO和VBO。再次非常感谢!在渲染的几分钟内,我猜asker可能会在每一帧重新读取一个.obj文件,然后再次重新读取该文件以按其索引查找每个顶点。