在金属中画出点

Ele*_*nor 5 point-clouds metal

我使用drawIndexedPrimitives函数在Metal中绘制点,但我不应该在哪里调整点大小.在OpenGL ES中,我可以在着色器中调整点大小:gl_PointSize = 10.0f; 这在Meta中如何运作?

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

绘制点功能(快速):

commandEncoder.drawIndexedPrimitives(.Point,
                                     indexCount:indexCount,
                                     indexType:.UInt16,
                                     indexBuffer:indexBuffer,
                                     indexBufferOffset: 0)
Run Code Online (Sandbox Code Playgroud)

Ele*_*nor 8

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

在顶点着色器的结构中设置var

 struct VertexOut{
...
    float pointsize[[point_size]];
...}
Run Code Online (Sandbox Code Playgroud)

并设置var的值:

VertexOut.pointsize = 10.0;
Run Code Online (Sandbox Code Playgroud)

然后在主代码中使用Draw points功能:

commandEncoder.drawIndexedPrimitives(.Point,
                                     indexCount:indexCount,
                                     indexType:.UInt16,
                                     indexBuffer:indexBuffer,
                                     indexBufferOffset: 0)
Run Code Online (Sandbox Code Playgroud)

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