在金属中画出点

时间:2016-04-28 11:12:04

标签: point-clouds metal

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

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

绘制点功能(快速):

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

1 个答案:

答案 0 :(得分:5)

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

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

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

并设置var:

的值
VertexOut.pointsize = 10.0;

然后在主代码中使用绘图点功能:

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

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