配料和表演

我想了解配料,我不知道如何去做,我可以有更多的信息吗? 这是我现在发现的:

批量信息

有很多types的配料:

  • 雪碧配料
  • 几何配料
  • ???

雪碧配料

只有一个绘制调用绘制所有精灵是非常有用的。 要做到这一点,一个SpriteBatcher类需要获取具有相同材质和相同几何体(sprite = square geometry)的所有网格。

  1. 获取相同材质的精灵
  2. 将所有Sprite的matrix发送到Sprite着色器( http://antonholmquist.com/blog/sprite-batching-opengl-es-2-0/ )

几何配料(使用静态几何)

合并网格的几何,所以我们可以在一个绘图调用中绘制所有的网格。

  1. 获取所有静态网格
  2. 合并网格的几何graphics,并用matrix计算它们的位置(计算一个VBO和IBO)
  3. 隐藏原始网格以避免两次绘制。

我对吗? 谢谢!

分批处理是将几何分组在一起(它们应该是相容的,例如相同的材料,上下文状态等),以便尽可能less地使用绘图调用。 这样就可以充分利用GPU的吞吐量,从而提高性能。

一种方法是通过dynamic顶点/索引缓冲来合并几何。 dynamic缓冲区的定义如下

GPU(只读)和CPU(只写)都可以访问的资源。 dynamic资源对于CPU每次至less更新一次的资源来说都是不错的select。 要更新dynamic资源,请使用Map方法。

通过使用此方法来提高性能的一些步骤,

  1. 在GPU上做一个基准testing,以更好地理解吞吐量。
  2. 根据基准结果创建合理大小的dynamic顶点/索引缓冲区。
  3. 将具有兼容外观,渲染状态,顶点格式和基元types的几何体提供给dynamic顶点和索引缓冲区。
  4. 继续按照上面讨论的方式input几何graphics,直到缓冲区已满或即将到来的几何graphics不兼容为止,然后调用graphics绘制方法刷新缓冲区。
  5. 通常情况下,可以有一个以外的一个dynamic顶点/索引缓冲区集,所以如果几何体不能送入当前缓冲区,那么可以使用另一个。 直到所有缓冲区被占用,然后刷新。

希望这可以帮助。