现在我已经知道如何在 Metal 中渲染多个三角形:
let vertexBuffer = device.makeBuffer(vertices_triangles)
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
renderEncoder.drawPrimitives(type: .triangleStrip, vertexStart: 0, vertexCount: vertices_triangles.count)
renderEncoder.endEncoding()
commandBuffer.present(view.currentDrawable!)
commandBuffer.commit()
这里,vertices_triangles
是一个Array
元素Vertex
。相邻的三个顶点显示要渲染的三角形。
但是,我真的不知道如何在 Metal 中渲染多个 triangleStrips。
let vertexBuffer = device.makeBuffer(vertices_triangleStrips)
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
renderEncoder.drawPrimitives(type: .triangleStrip, vertexStart: 0, vertexCount: vertices_triangleStrips.count)
如果我将相邻的顶点放入vertices_triangleStrips
并设置renderEncoder.drawPrimitives.type
为.triangleStrip
,我将得到一个triangleStrip。但是如何渲染多个 triangleStrips?我尝试使用for
循环来制作多个顶点缓冲区并用于renderEncoder.drawPrimitives
绘制每个三角形条。出于性能原因,这样做似乎不是一个好主意。