Ich habe einige grundlegende Metall-Rendering gelernt, und ich bin mit einigen grundlegenden Konzepte stecken:Wie oft wird der Vertex-Shader mit Metall bezeichnet?
Ich weiß, dass wir Vertex-Daten an einen Shader mit schicken:
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
Und dann können wir es abrufen im Shader mit:
vertex float4 basic_vertex(const device VertexIn* vertexIn [[ buffer(0) ]], unsigned int vid [[ vertex_id ]])
Wie ich es verstehe, wird die Vertex-Funktion für jeden Scheitelpunkt einmal aufgerufen werden, und vertex_id wird bei jedem Aufruf aktualisiert den Vertex-Index enthalten.
Die Frage ist, woher kommt die Vertex_ID?
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
renderEncoder.setVertexBuffer(vertexBuffer2, offset: 0, index: 1)
Wenn Vertex hat drei Elemente, und vertexBuffer2 hat 10 Elemente ... wie oft ist die Vertex-Funktion aufgerufen:
ich an die Shader mehr Daten mit unterschiedlichen Größen schicken könnte? 10?
Danke!