【问题标题】:Should POINT_SPRITES or TRIANGLES be used for big quadsPOINT_SPRITES 或 TRIANGLES 是否应该用于大四边形
【发布时间】:2015-12-24 17:26:57
【问题描述】:

我现在处于困境中,我有一个粒子系统,它有大约 500 个没有旋转的粒子,每个粒子的大小可以大到 100 像素,我用 2 种不同的绘制方式进行了测试,首先是使用点精灵和第二个使用 4 个顶点和 6 个索引来制作四边形,我测试了两者,但我在我的机器上获得了几乎相同的性能。 我已经读过,对于某些 GPU 中的大点精灵实际上被转换为三角形,这很慢,所以最好从一开始就将它们绘制为三角形,但这不应该意味着你有更多的数据要推送到 GPU 吗?

用于每个点的浮点数:

  • 点精灵:4(x,y,size,color)
  • 三角形四边形:(16(x,y,color,textureCoords)*4)+6(indice)=22

所以问题是我是否应该在设置菜单中放置一个选项,用户可以在其中切换这两个选项,以防他的 gpu 更擅长直接绘制三角形或点精灵?

【问题讨论】:

  • 所有粒子都是用一次draw call绘制的?如果不是,那将是尝试改变的第一件事。如果是,那么您的瓶颈可能是填充率或像素着色器(移动硬件通常是这种情况)。如果你想测试光栅化性能,你应该尝试设置一个非常小的视口(比如 1px)来绕过上述瓶颈。

标签: opengl opengl-es opengl-es-2.0


【解决方案1】:

理论上点精灵应该更快,但也有一些缺点。

您的粒子可能非常大,并且点精灵在其中心坐标处被剪裁。

最好的选择是使用实例渲染,但它在 OpenGL ES 2 中不可用。

关于点精灵和粒子系统有一个很好的答案 - https://stackoverflow.com/a/17400234/1351828

【讨论】:

    猜你喜欢
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多