나는 몇 가지 기본적인 금속 렌더링을 배우고 있었고, 나는 몇 가지 기본 개념 붙어 :버텍스 쉐이더는 금속으로 몇 번이나 호출됩니까?
나는 우리가 사용하는 쉐이더로 정점 데이터를 전송할 수있어:
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는 어디에서 오는가?
나는 다른 크기와 쉐이더에 더 많은 데이터를 보낼 수 있습니다 : VertexBuffer에 3 개 요소를 가지고 있으며, vertexBuffer2 10 개 요소 ...을 가지고
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
renderEncoder.setVertexBuffer(vertexBuffer2, offset: 0, index: 1)
경우 정점 기능은 몇 번이라고? 10?
감사합니다.