【问题标题】:Drawing simple shapes, which is more efficient: Shaprenderer or SpriteBatch?绘制简单的形状,哪个更高效:Shaprenderer 还是 SpriteBatch?
【发布时间】:2014-05-11 12:37:17
【问题描述】:

在我的游戏中,我有大约 50 个不同大小和不同颜色的实心圆全屏分布,它们不断调整自己的大小,创建动画。我目前正在使用Shaperenderer 来渲染所有这些。这样一来,所有的圆圈看起来都很清晰,但似乎性能不是很好。我应该制作一个圆形精灵,然后使用SpriteBatch 而不是Shaperenderer 渲染它们吗?这样做会提高性能吗?

【问题讨论】:

  • 两个都试一下,然后计时。确保渲染时间(而不是,例如,构造精灵)。多次运行,以防止出现预热/缓存问题。
  • 这取决于圆圈的数量以及它们在屏幕上的大小。但如果它们非常大,使用精灵可能会遇到填充率问题。在这种情况下,首先确保您打开了深度测试。如果不是这样,可能您当前的减速是因为绘制调用过多,您需要找到一种方法将它们批处理到单个调用中。

标签: opengl libgdx vector-graphics raster-graphics


【解决方案1】:

一般来说,是的,SpriteBatch API 比 Libgdx 中的 ShapeRenderer API 更优化。 ShapeRenderer 专为调试覆盖和易于使用而设计。但是,这也取决于您使用 API 的具体情况。

ShapeRenderer API 假定您的视口已映射到像素单位。它根据粗略的猜测确定要在圆中使用的顶点数。您可能为每个圆创建了太多顶点(并且您可以通过减少计算的顶点数量来提高性能而不牺牲保真度)。

但对于任何特定情况,在优化之前分析您的代码并查看实际花费的时间是有意义的。

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2013-03-31
    • 2017-04-15
    • 2011-10-08
    • 2017-02-03
    • 2010-10-08
    • 2010-11-10
    • 2019-11-13
    • 1970-01-01
    相关资源
    最近更新 更多