gpt4 book ai didi

swift - Metal 着色语言中平移手势的纹理重复

转载 作者:行者123 更新时间:2023-11-30 11:27:06 25 4
gpt4 key购买 nike

我是 Metal 着色语言的新手。所以您的指导会很有帮助。我只是使用 Metal 重复纹理,如下图所示 (Image sequence).但它似乎不平滑。我怎样才能让它看起来像下面的 Metal 点链接中所做的那样平滑。( 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 下降。所以我的问题是不知道在 Metal 层上的单个平移上会添加多少纹理,我如何为帧缓冲区分配内存。

最佳答案

您没有必要使用实例。

更改此:

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

对此:

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

关于swift - Metal 着色语言中平移手势的纹理重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50622942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com