【发布时间】:2017-10-07 15:50:49
【问题描述】:
我一直在学习一些基本的金属渲染,但我对一些基本概念感到困惑:
我知道我们可以使用以下方法将顶点数据发送到着色器:
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
然后我们可以在着色器中检索它:
vertex float4 basic_vertex(const device VertexIn* vertexIn [[ buffer(0) ]], unsigned int vid [[ vertex_id ]])
据我了解,每个顶点都会调用一次顶点函数,并且 vertex_id 将在每次调用时更新以包含顶点索引。
问题是,那个vertex_id是从哪里来的?
我可以向着色器发送更多不同大小的数据:
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
renderEncoder.setVertexBuffer(vertexBuffer2, offset: 0, index: 1)
如果 vertexBuffer 有 3 个元素,而 vertexBuffer2 有 10 个元素……顶点函数被调用了多少次? 10?
谢谢!
【问题讨论】:
标签: ios metal vertex-shader