Doing frustum culling on the CPU
Frustum culling is used to determine whether a part of our scene is visible from a viewing frustum. There are many tutorials on the internet that show how to do this. However, most of them have a significant drawback.
Many frustum culling examples, as was pointed out by Inigo Quilez in his blog http://www.iquilezles.org/www/articles/frustumcorrect/frustumcorrect.htm, end up checking if a mesh is outside the viewing frustum by comparing it with six viewing frustum planes. The mesh's axis-aligned bounding box (AABB) is used for this. Then, anything that lies on the outer side of any of these planes is rejected. This approach will produce false positives when a big enough AABB, which is not visible, intersects some of the frustum planes. The naive approach will accept these AABBs as visible, thereby reducing the culling efficiency. If we are talking about culling individual meshes, taking care of such cases may not be worth it performance-wise...