Быстро iOS MetalKit нарисуйте кривую, почему конец кривой всегда находится в центре, как я могу это исправить? - PullRequest
0 голосов
/ 11 января 2019

Swift 4.2, iOS 12.1, Xcode 10.1

Я пытаюсь использовать MetalKit для рисования кривой / линии на экране.

Вот некоторый относительный код моего класса Renderer.

//TWO Points here
var vertices: [Float] = [
    0.7, 0.7 , 0.0,
    0.7, 0.8, 0.0
]

//maker buffer
vertexBuffer = device.makeBuffer(bytes: vertices, length: vertices.count * MemoryLayout<Float>.size, options: [])


commandEncoder?.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
commandEncoder?.drawPrimitives(type: .lineStrip , vertexStart: 0, vertexCount: vertices.count)

Вот мой код Shader.metal.

#include <metal_stdlib>
using namespace metal;

vertex float4 vertex_shader(const device packed_float3 *vertices [[ buffer(0) ]], uint vertexId [[vertex_id]]){

    return float4(vertices[vertexId], 1);
}

fragment half4 fragment_shader(){

    return half4(1, 0, 0, 1);

}

но, наконец, я получил это, посмотрите на картинку. Почему это всегда конец в центре экрана, как я могу это исправить? enter image description here

Кстати, есть ли хороший учебник MetalKit для изучения?

1 Ответ

0 голосов
/ 11 января 2019

vertices.count равно 6, количество Float с в нем. Я думаю, вы ожидаете, что он будет 2.

...