It has been so long since I last checked the game. I am wondering if the game still uses software rendering, or if it is using hardware rendering through OpenGL or DirectX.
Yes! And we will always support software rendering. Hardware rendering will just be something we do for speed improvements, but the software renderer will be able to run the whole game, just more slowly than if you run the hardware path.
I guess I will start writing my game with software rendering and stop wasting time learning opengl for now. I tried working with OpenGL, but i am not familiar with Shaders, and I did not find clear resources explaining how to prepare opengl for projects in C++.
I was just curious to know how would you have approached rendering in the early phases of the game if you were using OpenGL from the start.
In the early stages when you were still experimenting with generating some rooms and getting the camera to move between rooms, etc. When you were just calling DrawRectangle to write directly to the buffer.
Would you have used/called OpenGL code where needed at this early stage?
Yeah, I would just call OpenGL instead of the software renderer. In some ways it's easier, because it has a bunch of advanced rendering stuff already there, but in some ways it's much harder, because you cannot just draw directly into your own memory or anything like that.
So, it's six of one, half dozen of the other. In general I suspect I would much rather have software rendering always, but unfortunately that's not really possible these days, due to how specialized the hardware is. Maybe someday it'll converge again :P
Sure, but that is not at all like being able to do stuff directly in your own memory. It is much harder to debug render-to-texture than memory you can just look at directly, especially because there are many framebuffer state things and drawing modes and other nonsense that makes it very hard for you to ensure that you are testing exactly what you want to test.
Yeah while I don't have a lot of experience with graphics it seems a bit weird to me how we can't just directly look at the memory we are drawing too.
So setting up a quick OpenGL context with whatever state we need and using that to draw in an earlier exploration phase seems the way to go. And then later we can start pulling those out to a more formalized renderer (or something of the sort).
Seems like the way to go.