Hello Caroline, I understand all of matrix with your help. This week I start to study The Chapter 5. When I read starter source code and Lighting Fundamentals, the Initializers of MDLVertexBufferLayout makes me puzzle. For example , I do not know the reason why stride parameter is 12. If I use 16 bytes whether does lead to GPU compute slow.
You decide what is sensible for your layout.
MemoryLayout<float3>.stride, which is 16 bytes long, but a
float3 also fits into 12 bytes. Try changing the offset to 32, which also works, but will put padding in the buffer.
Because you’re using a vertex descriptor and in your shader file you’re using
[[attribute(0)]], the vertex function will use
[[stage_in]] and automatically know from the vertex descriptor what layout you’re using.
I think the book should probably be using 12 here.
P.S. I’m glad you got your matrix sorted - matrices is the essence of where to put your vertices, so it’s probably the most important topic