I'm not sure this is going to work. 128x128x128 cubes = 2.1mill * 8 vertices each (I can't reuse the points, as vertex colour would differ) = ~17mill vertices.
Can graphics cards even take that many vertices being uploaded?
I did find a sample somewhere on this forum (can't remember where now), that rended 300,000 vertices randomly across the screen, but even that chugged my computer.
Hmmm, maybe I could produce a VBO just for one layer of 128x128 cubes (131,072 vertices), then for each Z layer, modify the colours for each vertex, draw to screen, raising up the y axis. Still seems an awful lot to render.
I did try caching each layer of the voxel in a bitmap, only only re-render that when a voxel is changed inside, but that consumed massive amounts of memory.
Maybe to get the resolution I want, maybe I need to try this trick
Though I imagine with a fairly large voxel matrix, this could be quite difficult to keep track of which blocks fit in which triangles.
The only other thing I could think is decreasing the number of triangles by searching each side of each plane of the voxel model, and combining a bunch of connected colours together. But I can imagine my computation time being huge.
To be fair, blitting a pre-rendered cube, and tinting it got me there without framedrops in Release mode, though I did have problems rendering that cube based on resolution.
Sorry, think I'm just waffling now, and not really getting anywhere... Maybe I should ditch the voxel approach, and either go back to 2D or consider low-poly 3D