处理1,000,000个2D精灵的C++ 2D图形库?

Fez*_*vez 6 c++ graphics qt 2d

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

我一直在尝试Qt,因为我认为他们的"40,000芯片"演示非常令人印象深刻.然而,有点玩弄,似乎我的电脑管理160,000芯片有很多麻烦.我不知道技术细节为什么它很慢(CPU?糟糕的OpenGL的GPU使用率?Qt对于大量的项目不好?)

所以,我一直在网上搜索一个适合我需要的图书馆.但我找不到任何东西,主要是因为没有图书馆似乎说"嘿,我擅长管理1,000,000个对象!",但我确信有些图书馆比其他图书馆更有能力.

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

谢谢!

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

JHS*_*ers 5

我在这里猜测,但是我认为问题是GUI工具箱(如qt,gtk)所包含的对象太重而无法使用1,000,000。GUI对象是按引用计数的,并且具有大量的额外数据。真的,我认为您不会找到可以满足您需求的GUI工具包。

但是,您需要的是2d图形(或3d)库。对于这种大小的东西,您将需要在相当低的水平上有效地管理渲染,OpenGL是一个合理的选择,尽管它需要一点学习曲线(尤其是对于sprites)。但是,开始研究它,找到适合您的体面的图书馆。

甚至可能只是将问题更改为“处理1,000,000 2D精灵的C ++ 2D图形库?”


小智 4

据我所知,目前还没有主流视频游戏能够在一帧中渲染 1,000,000 个 2D 精灵(粒子)。然而,2004 年的一个研究项目展示了如何实现这一目标:构建百万粒子系统

在我看来,当视频游戏最终在一帧中渲染 1,000,000 个粒子时,它们将通过 OpenCL 或 DirectCompute 来实现,因为这避免了著名的填充率硬件瓶颈,该瓶颈使得在 OpenGL 或 Direct3D 中渲染粒子变得不切实际。