See example at Onepixelahead
points are created with 3 data fields x, y, and z. 3 or more sets of points are needed to create a face. Front face vs back face have traditional been determined by the order of the points — clockwise vs counter clockwise. The faces then need to be painted, do they face the light? Bitmap textures need to be transformed into a perspective view and be properly lighted. Shadows require dropping down to the pixel level — which is ray tracing not openGL at this point in time.