Yep pretty much. I'm calculating the screen location, color/shade, order of all the shapes needed to be drawn and just telling some graphics2D instance to drawPolygon / drawString.
I've been working on all the optimization algorithms lately, so haven't had much to show. But I'm pretty much done for now with optimizations, and added support for rotated cubes just to have something new to show.
If anyone's interested, here's an generic overview of the optimization steps I take. Feel free to add suggestions.
1) determine max draw distance (the distance after which even the brightest 1x1x1 object would be too dark / small to be noticeable anyways)
2) determine the coordinates of the minimum-bounding-axis-aligned-rectangular-prism encompassing the camera field of view.
3) iterate through these coordinates (left -> center, then right -> center, then center, so we don't have to worry about draw-order or zbuffering)
4) for each non-empty coordinate, check if it is within the camera field of view via a simple dot product and distance check (since the minimum bounding rectangular prism is larger than the fov, and since this check is very low-cost)
5) get the surfaces of that coordinate that have normals facing the camera (again via dot product)
6) convert the surface coordinates to screen coordinates. As a final check, make sure at least one of the surface's screen x,y coordinates are within [-.5, .5] and if so, draw it
On top of this, in order to support vast areas, with potentially low-density, the world is divided into chunks, so that chunks aren't initialized unless they contain at least one surface, and they are skipped over in the drawing algorithm if empty.
The only additional major optimization plan I have, I plan not to update (remove & add) surfaces as they move, unless they are in view. Instead, I'll "expire" the surface's old location via some counter, and add "trigger-points" bounding clusters of surfaces which move together so that the actual surfaces are added to the world only if the trigger points are visible.
Here's a new 30-sec screen-capture.http://www.youtube.com/v/Oes6N6I4pjs?version=3&hl=en_US&start=