我是金属着色语言的新手,所以您的友好指导会很有帮助。
我只是使用金属重复纹理,如下图所示
(Image sequence).
但是它似乎不平滑,如何使它像下面的金属点链接一样显示为平滑线。(overlapping Metal Point primitives and blending

目前,我要做的是在笔势的每个触摸点为顶点缓冲区(MTLBuffer)分配内存。

码:

func allocateMemoryForVetexBuffer(vertices: Array<Vertex>){
        var vertexData = Array<Float>()
        for vertex in vertices{
            vertexData += vertex.floatBuffer()
        }

        let dataSize = vertexData.count * MemoryLayout.size(ofValue: vertexData[0])
        print("dataSize:\(dataSize)")
        vertexBuffer = device.makeBuffer(bytes: vertexData, length: dataSize, options: [])

        vertexCount = vertices.count

    }


我在平移手势识别器中调用此方法,但它导致FPS下降。所以我的问题是不知道在金属层的单个平移上会添加多少纹理,如何为帧缓冲区分配内存。

最佳答案

您不必要使用实例化。

更改此:

renderEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: vertexCount,
                             instanceCount: vertexCount / 3)


对此:

renderEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: vertexCount)

09-25 21:58