Let's Make a Voxel Engine (2013)
sites.google.com
sites.google.com
Even though very outdated now, I still think that these Voxel articles have some merit and can be useful for anyone just starting out with Voxels or wanting to take a dive into voxel based coding. I have been meaning to update these articles (or even write something from scratch) for the longest time, but alas, time and schedule always elude me, so this ends up falling down my list of priorities... maybe one day.
As someone already mentioned, my voxel engine and game Vox, has evolved now into this open source repo here: https://github.com/AlwaysGeeky/Vox and I am maintaining and developing this very actively. Feel free to take a look around and see what you think of the code and project.
Just bad practice nowadays, and results in slower performance too.
Immediate mode has the benefit that it's READABLE. It's possible to scan through code, and actually understand what's happening, and what the impact of small decisions will be.
Modern OpenGL exists for performance. People who are worried about performance should absolutely, without question, use Modern OpenGL when they're moving to their final code. And I get that's the spirit of what you're trying to say.
But when someone is trying to teach, and someone is trying to learn, how given input data translates to pixels on screen, immediate mode is vastly better at making READABLE code.
Sure, yes, if you're an expert with modern OpenGL, you'd probably want your teacher to write modern OpenGL, because, well, why not? You're an expert, right?!?
But that's akin to saying that you should explain advanced data structures with hand-coded machine language binaries. No.
C and C++ and immediate mode OpenGL are better for teaching the core concepts.
Also with Modern OpenGL you actually have to understand more about the whole process, with old OpenGL it's possible just ignore lightning, matrixes almost completely and not really understand them.
But yeah, I kinda agree on that point also.
If I had to also teach modern OpenGL in the articles too, they would be over double the size before even getting to anything voxel related.
I guess people already have forgotten how 3D programming used to be like.
I know the terms mean something else than 15 years ago (retained was a scenegraph model, put a box here, a model there; whereas immediate meant draw triangles yourself every frame), but still :-).
https://sites.google.com/site/letsmakeavoxelengine/home/disp...
I just took a look at the engine, and there's lots of fixed pipeline calls and immediate mode stuff there still.
See: https://github.com/AlwaysGeeky/Vox/blob/master/source/Render...
Technically yes, immediate mode and fixed pipeline are a different thing. But modern OpenGL implementations upwards from 3.x (3.3 I think) don't anymore support the fixed pipeline of rendering, which means that you have to implement your own matrix setting, no default shaders and so on.
Which is a kinda of a hassle and a steep learning curve, yeah, but once you get it, so much more flexible and better way to do things.
Anyway, good tutorial on explaining the basic stuff, but wouldn't recommend learning any of this fixed pipeline stuff anymore.
OpenES and WebGL (both based on OpenGL) removed immediate mode altogether because of that.
In modern OpenGL you should use you own shaders (and not the fixed pipeline), and push geometry to GPU using Vertex Buffer Objects (VBOs).
So even with OpenGL, you should move all the graphics processing into the GPU. The CPU is only working as orchestrator between data sets.
With geometry shaders you can even generate the data on the GPU itself.
I personally don't like software voxels, they're too big and ugly. There is much more potential in doing procedural geometry with proper instantiation.