我正在尝试做一个需要处理大量简单2D对象的项目,当然需要绘制它们。为此,我需要一个能够处理大量“精灵”的优秀C ++库。
我一直在尝试Qt,因为我认为他们的“40,000芯片”演示非常令人印象深刻。然而,有点玩弄,似乎我的电脑管理160,000芯片有很多麻烦。我不知道为什么它的速度很慢的技术细节(CPU?糟糕的OpenGL的GPU使用率?Qt对于大量的项目不好?)
所以,我一直在网上搜索一个适合我需要的图书馆。但我找不到任何东西,主要是因为没有图书馆似乎说“嘿,我擅长管理1,000,000个对象!”,但我确信有些图书馆比其他图书馆更有能力。
我不需要像SDL那样“好”的库,如果我没有操纵杆支持或其他什么都没关系。我只需要显示,缩放,旋转和移动大量简单的2D对象。
谢谢!
P.S:我测试了Ogre3D。我想知道他们如何设法处理15K三角形并在他们的演示程序中以100fps的速度在我的计算机上运行。而且,它是3D的!如果我去150K三角形,它是否可以很好地扩展?答案 0 :(得分:4)
我在这里猜测,但我认为问题是GUI工具包(如qt,gtk)的对象太重了,你不能使用1,000,000。 GUI对象是引用计数的,并且具有大量额外数据。真的,我认为你不会找到一个可以做你想要的GUI工具包。
然而,您需要的是2D图形(或3D)库。对于这样大小的东西,你会想要有效地管理渲染,并且在相当低的水平上,OpenGL是一个合理的选择,虽然它需要一点学习曲线(特别是对于精灵)。但是开始考虑这个问题,并找到一个适合你的图书馆。
甚至可能只是将问题改为“处理1,000,000个2D精灵的C ++ 2D图形库?”
答案 1 :(得分:4)
据我所知,不存在在一帧中渲染1,000,000个2D精灵(粒子)的主流视频游戏。 2004年的一个研究项目展示了如何做到这一点:Building a Million Particle System
在我看来,当视频游戏最终在一个帧中渲染1,000,000个粒子时,它们将通过OpenCL或DirectCompute这样做,因为这样可以避免着名的填充率硬件瓶颈,这使得在OpenGL或Direct3D中渲染粒子变得不切实际。 / p>