Suggested render method: render infinite backgroud, (stars, heavenly bodies etc) using lfb writes, raster::draw_xxx, etc. Group all of your meshes into batches (as you might in the Talisman architecture) You must be able to sort batches between each other. A simple z extent check, grouping overlaps into the same batch would probably suffice. Using the entire scene as one batch will also work, and is what I would recomend on your first implementation. Smaller batches are easier on the cache. Render all batches front to back. for each batch { call raster::submit_xxx() for all visible polys in any order (you should not include backfacing polys, they will be eliminated by the 2d culling) It is helpful, but not necessary, to submit polys sorted by the texture that they use. raster::submit_xxx() returns a poly handle, or null if the poly is culled. collect these poly handles and call raster::submit_edge(x0,y0,x1,y1,poly_0, poly_1) for each edge for which poly_0, poly_1 or both exist In a first pass you may want to use: for( each poly ) { poly * p = submit_xxx(vr[0],vr[1],vr[2],...); if( p ) { for(int h=0;h