2016-04-28 22 views
3

我使用drawIndexedPrimitives函数在金属中绘制点,但我不应该在哪里调整点的大小。在OpenGL ES中,我可以在着色器中调整点的大小:gl_PointSize = 10.0f;这在Meta中如何工作?顺便说一下,对于文件中的绘制点,我有一个las文件(3d点云数据:一个顺序二进制格式,用于存储来自传感器的数据以及某些应用程序的中间处理存储),并且我希望将它导入Xcode并使用Metal for iOS渲染这些点,任何人都知道如何使用Metal实现las文件?在导入之前我应该​​将它转换为OBJ还是PLY?金属中的绘制点

画点功能(SWIFT):

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

回答

3

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

建立一个VAR在结构中的顶点着色器

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

并为VAR设定值:

VertexOut.pointsize = 10.0; 

然后用画点功能,在主代码:

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

但仍然坚持与拉斯维加斯文件...不知道如何使用金属渲染...