I’m a newbie in the field of iOS in general and graphics in particular.
I’m really hard to find the answer:
- What is difference between Model I/O & MetalKit & Metal ?
- Forced me to combine all the above classes to write code ?
- Is there a way to easily visualize in each pipeline which class should I use ? (such a hierarchical tree)
Thanks for the knowledge you gave me, I’m in chapter 8: Textures (Ver 3.0). And I realized I learned a lot. But i’m really confused with each framework being used in the lesson
In code:
Hope you help me more.
Hi @nghiaphamsg and welcome to the forums !
-
Metal was the original framework when Metal first came out in 2014. The next year, Apple added MetalKit, which simply adds extra functionality to make Metal easier to use - for example
MTKView
is a MetalKit view that subclasses UIView
. Model I/O however, is not specific to Metal - SceneKit uses it too. It’s for managing 3D assets, importing and exporting etc.
Where you show the text saying “it’s your engine”, that means that you could generate MTLBuffer
s that render vertices without using the convenient MetalKit methods or loading through Model I/O.
You can see what’s in each framework by looking at the Apple documentation:
Apple have recently updated the documentation pages for WWDC 2022, so the documentation is much easier to read, with all the items listed down the left.
-
Yes, you would generally use all the above classes, depending on what you want to do. If you don’t do anything with models, then you won’t need to use Model I/O though.
-
Not really. You initialise the app with MTLDevice
, MTLCommandQueue
. Each frame you create an MTLCommandBuffer
and one or more MTLRenderCommandEncoder
s. Each render command encoder is a render pass, in which you might have multiple MTLRenderPipelineState
s where you present MTLTexture
s and MTLBuffer
s to the GPU.
There’s a lot to get your head around, and I would recommend you do the early chapters several times, until you’re familiar with the above objects all of which you would use in any rendering situation. I would recommend especially redoing chapter 1, which has a basic overview of 3D rendering.
2 Likes
Thanks for the reply, it made me understand better
while I was posting this stupid question I found your lecture on youtube.
It really helped me restructure the content from chapter 1 to now.
You’re right. I need to watch it over and over again.
The Apple documentation is also very detailed, I understood better.
The code I posted above may be because I don’t understand all the method.
by the way I want to ask, will you continue to update Metal 3 after WWDC 2022 ?
Thank you very much
1 Like
We generally strive to update the books annually. Metal by Tutorials V3 came out a couple of months ago, and I haven’t yet seen anything at WWDC that makes the book out of date. Metal 3 has some great new features, but they aren’t for beginner Metallists.
1 Like
Hello,
I came to the forum to ask a very similar question as the original author. Although this post is 2 years old now, I am new to graphics programming and Apple in general.
Currently I am finding it overwhelming, like the original author mentioned I don’t think it helps with the amount of different classes/structs all starting with M for some reason my brain has a hard time figuring out which framework the class/struct is from.
The information from this post has helped me, I may need to go over some of the chapters again. Currently on chapter 4 (The Vertex Function). The programmable stages seem to make the most sense to me so far, but that might be due to me having a very small amount of experience with WebGL.
1 Like