处理100万个2D精灵的C++ 2D图形库?

6

我正在做一个需要处理大量简单2D对象的项目,并且当然需要绘制它们。为此,我需要一个可以处理大量"精灵"的好的C++库。

我一直在尝试Qt,因为我认为他们的“40,000芯片”演示非常令人印象深刻。但是,稍微玩弄一下,似乎我的电脑在管理160,000个芯片时遇到了很多麻烦。我不知道为什么会慢(CPU?OpenGL的GPU使用不佳?Qt对于非常大量的项目不好?)

因此,我一直在搜索适合我的库。但是我找不到任何一个主要是因为没有库似乎说“嘿,我擅长管理100万个对象!”,但我相信有些库比其他库更有能力。

我不需要像SDL那样“好”的库,如果我没有摇杆支持或其他什么都没关系。我只需要显示、缩放、旋转和移动大量简单的2D对象。

谢谢!

P.S:我测试了Ogre3D。我想知道他们如何在我的计算机上处理15K三角形并以100fps运行他们的演示程序。而且,这是在3D中!如果我去到150K三角形,它是否可以很好地扩展?


3
你们到底在做什么需要使用1,000,000个GUI对象,为什么不裁剪并重复使用屏幕外的对象? - Skyler Saleh
“Bad OpenGL的GPU使用”?我会说是实现不好或者是GPU不好:P - BЈовић
@RTS:我可能想要1,000,000个独立的代理人,在本地基础上进行交互。例如像1,000,000只蚂蚁一样。它们可能具有相同的图形外观,但我并不在意。而且你似乎在谈论复制屏幕外的对象,但我不明白其意义... @VJo:我不知道,我必须承认^^ - B. Decoster
2个回答

5
我猜测问题在于GUI工具包(如qt、gtk)的对象对于您来说过于沉重,无法使用1,000,000个。GUI对象是引用计数的,并且有大量额外的数据。实际上,我认为您不会找到一个能够满足您需求的GUI工具包。
然而,您需要一个2D图形(或3D)库。对于这样大小的东西,您将希望以相当低的级别有效地管理渲染,OpenGL是一个合理的选择,尽管它需要一些学习曲线(特别是对于精灵)。但是开始寻找一个适合您的好的库。
甚至可以将问题改为“处理1,000,000个2D精灵的C++ 2D图形库?”

好的,目前为止,我已经听从了你的建议并更改了标题 =) - B. Decoster

4
据我所知,目前还没有主流的视频游戏能在一帧中渲染出100万个2D精灵(粒子)。然而,一个来自2004年的研究项目展示了如何实现这一点:构建百万粒子系统
在我看来,当视频游戏最终能够在一帧中渲染出100万个粒子时,它们将通过OpenCL或DirectCompute实现,因为这样可以避免OpenGL或Direct3D中著名的填充率硬件瓶颈,使得渲染粒子变得不切实际。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接