【发布时间】:2015-02-27 12:28:21
【问题描述】:
目前我有一个动态 VBO(每帧更新,粒子系统)。 我发送 4 个用于 pos 的浮点数和 4 个用于颜色的浮点数。
如果我改用 half_float 数据类型,我可以期待多少性能?是 5% 还是 30%?
假设我想以点精灵的形式发送 100k...500k 粒子。 所以我发送了大约 100k*8*4bytes = ~3MB
当然我知道各种 GPU 之间可能存在差异...
【问题讨论】:
-
如果你有这么多的顶点,我要做的第一件事就是只使用三个浮点数来定位并省略齐次坐标(因为它通常是 1)。这将显着减小 VBO 的总大小。
-
是的,这是另一个好主意:它将节省 1/8 的带宽。但是半浮动可以进一步减少这种情况
-
以及如何有效地将数据从vec4数组复制到vec3数组中?只是一个简单的 for 循环?
-
输入汇编器的性能通常与顶点结构本身的整体大小和对齐方式有关(32 或 64 字节往往是最有效的)。使用 float16s 可用于改进顶点大小/对齐。
标签: performance opengl directx gpu