我是金属着色语言的新手。所以你的善意指导会很有帮助。 我只是使用金属重复纹理,如下图所示 (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。所以我的问题是不知道将在金属层上的单个平移上添加多少纹理,我如何为帧缓冲区分配内存。
答案 0 :(得分:0)
你不必要地使用实例化。
改变这个:
renderEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: vertexCount,
instanceCount: vertexCount / 3)
到此:
renderEncoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: vertexCount)