rendering primitives, OpenGL does not have knowledge of full 3D objects – it
only sees one primitive at a time.
this reason, it may be more efficient if the programmer organises objects and
performs his/her own culling (particularly trivial acceptance tests) before
sending objects to OpenGL.
for primitives or objects partially in the view volume, it may be more
convenient to leave these for OpenGL to clip.
simple approach would be to have a bounding box around each 3D object. If all eight vertices of the object’s
bounding box are in the same negative half-space of a view
frustum plane, the entire object can be skipped.