首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Metal IOS中的网格

Metal IOS中的网格
EN

Stack Overflow用户
提问于 2019-02-13 13:27:36
回答 1查看 1.1K关注 0票数 0

我不熟悉MTKMesh/MDLMesh创建2D自定义网格的任何在线资源材料。我有顶点数据。

代码语言:javascript
复制
init(vertexBuffer: MDLMeshBuffer, vertexCount: Int,  descriptor: MDLVertexDescriptor, submeshes: [MDLSubmesh])

我希望使用这个函数。有关创建MDLMeshBuffer、MDLVertexDescriptor和子网格的任何建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-13 16:00:29

假设您有一个只有一个表示position的float2成员的Vertex结构。您可以从这样的顶点数组([Vertex])和16位无符号整数索引数组([UInt16])开始。

然后,您可能会这样做:

代码语言:javascript
复制
let device = MTLCreateSystemDefaultDevice()!
let allocator = MTKMeshBufferAllocator(device: device)

let vertexBuffer = allocator.newBuffer(MemoryLayout<Vertex>.stride * vertices.count, type: .vertex)
let vertexMap = vertexBuffer.map()
vertexMap.bytes.assumingMemoryBound(to: Vertex.self).assign(from: vertices, count: vertices.count)

let indexBuffer = allocator.newBuffer(MemoryLayout<UInt16>.stride * indices.count, type: .index)
let indexMap = indexBuffer.map()
indexMap.bytes.assumingMemoryBound(to: UInt16.self).assign(from: indices, count: indices.count)

let submesh = MDLSubmesh(indexBuffer: indexBuffer,
                         indexCount: indices.count,
                         indexType: .uInt16,
                         geometryType: .triangles,
                         material: nil)

let vertexDescriptor = MDLVertexDescriptor()
vertexDescriptor.attributes[0] = MDLVertexAttribute(name: MDLVertexAttributePosition,
                                                    format: .float2,
                                                    offset: 0,
                                                    bufferIndex: 0)
let mdlMesh = MDLMesh(vertexBuffer: vertexBuffer,
                      vertexCount: vertices.count,
                      descriptor: vertexDescriptor, 
                      submeshes: [submesh])

let mesh = try? MTKMesh(mesh: mdlMesh, device: device)

如果顶点类型比较复杂,则需要相应地调整顶点描述符。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54663137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档