You might try picking apart some of the code I used for one of my articles -
AViD[
^]. It uses the mouse to rotate the camera and zoom in/out. It might not be exactly what you're looking for, but it might atleast give you a direction of where you need to go.
As for performance, you can reduce the number of meshes you create, the complexity of those meshes, and reduce the field of view of the camera. Or change the rendering to use hardware, if its not already.