Hi, I started watching Handmade Hero and really had a good time. I'm really not an experienced programmer. I know some C, Objective-C and Swift as I'm using a mac. I always wanted to know how game engines really work way beneath all this confusing frameworks mostly everybody uses nowadays. And Handmade Hero really scratches that itch.
However as I'm on a mac I got some questions. In the first part of the series the game was completely rendered by software right? And as Casey then explained concerning the graphics there is just one thing to do to which is platform specific and that is allocate some memory, write a bitmap into it and draw it on the screen using a os specific function. This is all done by software. No opengl, no directx right?
As I'm pretty new to programming, this seems quite easy to me and I started asking why bother and use opengl anyways if its that simple? OpenGl seems like a huge framework. There has to be more to it than just drawing a buffer to the screen right?
It has vertex buffers, does rasterization and so on. Is this all done manually by Casey before he starts using opengl? Performance aside is Caseys software renderer as capable as opengl in terms of functionality? Like can you draw single pixels or draw a line or a triangle?
Moreover am I right in assuming that you can't do software based rendering on a mac? As far as I know mostly everything which has to do with graphics used opengl to draw to the screen, now its metal, apples own "faster" connection to the GPU. Will Casey use metal?
And if it is possible will he do the rendering by software or opengl by the time he writes the platform code for OS X?
Or is there no platform specific rendering going on except drawing the bitmap to the window. But there has to be some rendering going on right? He has to draw images and stuff. Or is everything drawn into the bitmap which is then drawn to the screen using either os specific software (cpu) or hardware (gpu) functions?
As you can probably tell, I'm a little bit confuzzzzed.
I already asked this on stackexchange but the answers there didn't quite satisfy my knowledge hunger.
How is a game drawn onto the screen?
Please correct me if I'm wrong with my assumptions.