///<summary>
        ///    Prepare a viewport, the camera and the scene for a rendering operation
        ///</summary>
        protected void PreTargetOperation(CompositorTargetOperation op, Viewport vp, Camera cam)
        {
            SceneManager sm = cam.SceneManager;

            /// Set up render target listener
            listener.SetOperation(op, sm, sm.TargetRenderSystem);
            listener.NotifyViewport(vp);
            /// Register it
            sm.QueueStarted += listener.OnRenderQueueStarted;
            sm.QueueEnded   += listener.OnRenderQueueEnded;
            /// Set visiblity mask
            oldVisibilityMask = sm.VisibilityMask;
            sm.VisibilityMask = op.VisibilityMask;
            /// Set whether we find visibles
            oldFindVisibleObjects     = sm.FindVisibleObjectsBool;
            sm.FindVisibleObjectsBool = op.FindVisibleObjects;
            /// Set LOD bias level
            oldLodBias  = cam.LodBias;
            cam.LodBias = cam.LodBias * op.LodBias;
            /// Set material scheme
            oldMaterialScheme = vp.MaterialScheme;
            vp.MaterialScheme = op.MaterialScheme;
            /// XXX TODO
            //vp->setClearEveryFrame( true );
            //vp->setOverlaysEnabled( false );
            //vp->setBackgroundColour( op.clearColour );
        }