我想为三角形条中的每个条指定颜色,并用退化的三角形分隔。到目前为止,我正在与每个顶点一起发送该数据,因此我的顶点包括:[ PosX, PosY, PosZ, ColorX, ColorY, ColorZ, ColorW ]
。但是,每个顶点的颜色数据都是恒定的,直到在退化的三角形之后它可能会更改为止,因此每个顶点我浪费了8个字节(宽P3颜色)。
显然,使用许多绘制调用而不是退化的三角形可以解决内存问题(通过使用统一的缓冲区存储每个绘制调用的颜色),但也会产生不必要的巨大性能开销。
由于我只有简单的形状,因此在我的情况下,退化的三角形比索引缓冲区要好。尽管目前在每个条带中重复所有顶点的颜色数据的实现方式是可行的,但我想知道是否存在另一种方法可以将该数据更有效地传递给GPU。在Google上找不到关于此主题的太多信息(大概是因为如今退化三角形并不常见)。如果有人可以给我一些关于如何优化内存使用而又不降低性能的见解(也许通过使用另一个缓冲区?我想我需要能够告诉我当前在着色器中绘制的由退化三角形分隔的带)将不胜感激。
我正在使用Swift 4和Metal。