在 Metal 中绘制点

Draw points in Metal

我在Metal中使用drawIndexedPrimitives函数画点,但我不知道应该在哪里调整点的大小。在 OpenGL ES 中,我可以在着色器中调整点大小:gl_PointSize = 10.0f;这在 Metal 中如何工作?

顺便说一下,为了从文件中绘制点,我有一个 las 文件(3d 点云数据:一种顺序二进制格式,用于存储来自传感器的数据,并作为某些应用程序的中间处理存储),我想要将其导入 Xcode 并使用 Metal 为 iOS 渲染这些点,有人知道如何使用 Metal 实现 las 文件吗?在导入之前我应该​​将它转换为 OBJ 还是 PLY?

画点函数(swift):

commandEncoder.drawIndexedPrimitives(.Point,
                                     indexCount:indexCount,
                                     indexType:.UInt16,
                                     indexBuffer:indexBuffer,
                                     indexBufferOffset: 0)

我发现在着色器中定义点大小。

在顶点着色器的结构中设置一个变量

 struct VertexOut{
...
    float pointsize[[point_size]];
...}

并设置变量的值:

VertexOut.pointsize = 10.0;

然后在主代码中使用Draw points函数:

commandEncoder.drawIndexedPrimitives(.Point,
                                     indexCount:indexCount,
                                     indexType:.UInt16,
                                     indexBuffer:indexBuffer,
                                     indexBufferOffset: 0)

但仍然坚持使用 las 文件...不知道如何使用 Metal 渲染它...