Frustum culling using DigitalRune Geometry:
You can represent the objects using their bounding sphere or OBBs and use a PerspectiveViewVolume
to represent the viewing frustum. Set their Types
and put them in a collision domain. In each frame you can check which objects intersect the viewing frustum.
I agree, knowing the visibility has a lot of useful applications. We don't have any support for occlusion culling yet.
I know of two ways of doing occlusion culling: One approach involves occlusion queries on the GPU. The other involves a low-res occlusion map (on CPU) or a hierarchial Z buffer (on GPU). Here is a very interesting paper: http://www.selfshadow.com/talks/rwc_g...
We plan to implement occlusion culling as part of our DigitalRune Graphics library, which is still work in progress. It is too early to talk about any specifics.