So after a quick flick through the quick reference cards. A GL render goes like this:
1) Rotate and translate the vertex list
2) Remove hidden surfaces, to make the quad polygon list
3) Render a black and white luminosity phong quad set to a temp buffer with light at viewpoint
4) Use the visible rendered quad2D quad list to make a unit square texture to quad transform set
4) Apply translation and skew (2D) to texture/colour to blend texture pels with luminosity map
Works if all light sources are white, and no shadows are needed. Collision detect based on bounding radii. Improvements such as light hidden/shadowed-by-z-buffer quad lists, and blending light colour or shadow if not visible from light, only need a recalculation if a light moves, by a re-use of process 3 with another 2D rendered raster surface which is not displayed directly.
Maybe slight simplicities such as using a constant viewpoint direction vector, even for close off to the side objects, so making slightly off but faster lighting renders.
So for a simple library, having:
Mode 1: black and white render with light source from viewpoint.
Mode 2: Add texture/colour to a quad set using pixels blocks and quad numbering. As many textures as the hardware can handle can be overlaid, using different blend modes.
Mode 3: Create another mode 1 projection and map it back to a lighting texture, and apply using mode 2.
Mode 4: Provide resolution scaling so small buffer renders can be expanded, dithered and Gaussian filtered to a higher resolution. This means mode 1 does not have to do anti-alias blending on a z-buffer, and even good 1080p renders can be done with a 260p render buffer.
In the sense that people need to spend time making models, and less time writing 'the wheel', a mode 5 concession is to use a hand coded replacement for the black and white Phong shader, and a replacement for the scale image larger mode 4 function, with null implying use default.
These 5 mode functions, are enough, and functions to build the vertex and quad arrays are the only others needed for learning to model 3D.
Pi[NFA]=B256R0USB CL4SD8GB Raspbian Stock.
Pi[Work]=A+256 CL4SD8GB Raspbian Stock.
My favourite constant 1.65056745028