2016-04-28 2 views
3

J'utilise la fonction drawIndexedPrimitives pour dessiner des points dans Metal, mais je ne sais pas où je devrais ajuster la taille du point. En OpenGL ES, je peux ajuster la taille du point dans le shader: gl_PointSize = 10.0f; Comment cela fonctionne-t-il dans Meta? A propos, pour les points de prélèvement d'un fichier, j'ai un fichier las (données en nuages ​​de points 3d: un format binaire séquentiel utilisé pour stocker des données de capteurs et en stockage de traitement intermédiaire par certaines applications), et je veux importer à Xcode et rendre ces points en utilisant le métal pour iOS, quelqu'un sait comment mettre en œuvre avec le fichier las en utilisant le métal? Devrais-je le transformer en OBJ ou PLY avant de l'importer?Dessiner des points dans le métal

fonction draw points (swift):

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

Répondre

3

J'ai découvert que définir la taille du point dans le shader.

mis en place un var dans le struct pour vertex shader

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

et définissez la valeur du var:

VertexOut.pointsize = 10.0; 

puis utilisez la fonction Dessiner des points dans le code principal:

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

Mais toujours coincé avec le fichier las ... je ne sais pas comment le rendre avec Metal ...