2016-04-28 8 views
3

Я использую функцию drawIndexedPrimitives, чтобы нарисовать точки в Metal, но я не должен изменить размер точки. В OpenGL ES я могу настроить размер точки в шейдере: gl_PointSize = 10.0f; Как это работает в Meta?Draw points in Metal

Кстати, для рисования точек из файла у меня есть las-файл (данные 3D-облачных точек: последовательный двоичный формат, используемый для хранения данных с датчиков и промежуточного хранения данных в некоторых приложениях), и я хочу импортировать его в Xcode и визуализировать эти точки, используя Metal для iOS, кто-нибудь знает, как реализовать файл las с помощью Metal? Должен ли я преобразовать его в OBJ или PLY перед импортом?

функция рисования точек (быстрые):

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

ответ

3

я узнал, что определить размер точки в затенении.

создать вар в структуры для вершинного шейдера

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

и установите значение для Var:

VertexOut.pointsize = 10.0; 

затем использовать функцию рисования точек в основном коде:

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

Но все еще застрял в файле las ... не знаю, как сделать это с помощью металла ...