0

我是金属着色语言的新手。所以你的友好指导会很有帮助。我只是使用金属重复纹理,如下图所示 (图像序列)。 但它似乎并不平滑。我怎样才能让它看起来像金属点的以下链接中所做的那样平滑线。(重叠金属点基元和混合

目前我所做的是在我的手势中的每个触摸点为顶点缓冲区(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 下降。所以我的问题是不知道在金属层上的单个平移上会添加多少纹理,我如何为帧缓冲区分配内存。

4

1 回答 1

0

您不必要地使用实例化。

改变这个:

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

对此:

renderEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: vertexCount)
于 2018-06-01T15:11:20.373 回答