Currently I am using the following system for visibility determination of some 3D tiles, that cover the whole z = 0 plane:
- make an AABB of the frustum in world coordinates
- check for intersection with z = 0 plane, if not don't draw anything
- make AABBs of the tiles in world coordinates and check for frustum-AABB intersection in world space, if there's no intersection don't draw anything
By doing everything in world coordinates I only need to transform the frustum AABB from modelview to world space, otherwise I'd have to transform the tile AABBs into modelview coordinates.
Anyway, despite all the optimizations, my app still runs too slowly on old machines (about 20 fps) and I'd like to hear some ideas. Maybe I should be using spheres or calculate frustum-plane intersections exactly? The frustum is the linear perspective one.