iOS 金属折线发散到某个遥远的点。如何找到违规位置?

iOS Metal poly-line diverges to some distant point. How to find the offending position?

我正在使用 Metal 渲染一百万个点的线带,并且它有效。但是,我看到随机线段发散到某个任意点(见屏幕截图)。

如何找到中断线带渲染的点并将其从渲染中排除?

let particle = slice.rowParticleBuffer[pointIndex]

if particle.position.x.isNaN || particle.position.y.isNaN || particle.position.z.isNaN {
    print("x", terminator: "") //does not hit this
} else if fabsf(particle.position.x) > 10 || fabsf(particle.position.y) > 10 || fabsf(particle.position.z) > 10 {
    print("Z", terminator: "") //does not hit this either
} else {
    self.particlesBuffer[self.index] = slice.rowParticleBuffer[pointIndex]
    self.index += 1
}

所以魔法点原来是零,这是由索引错误引起的(代码跳过了一些索引,使主缓冲区的值为零)。

设粒子 = slice.rowParticleBuffer[pointIndex]

  if particle.position.x == 0 || particle.position.y == 0 || particle.position.z == 0 { /*skip*/ }