在Metal中绘制点

6
我使用drawIndexedPrimitives函数在Metal中绘制点,但是我不知道在哪里调整点的大小。在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)
1个回答

13

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

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

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

并设置变量的值:

VertexOut.pointsize = 10.0;

然后在主代码中使用绘制点的函数:

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

但仍然卡在las文件上...不知道如何使用Metal渲染它...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接