public Direct3DWindow(IController controller, IRenderer renderer, double frameRate)
        {
            if (controller == null)
            {
                throw new ArgumentNullException("controller");
            }
            if (renderer == null)
            {
                throw new ArgumentNullException("renderer");
            }
            _controller       = controller;
            _renderer         = (Direct3DRenderer)renderer;
            _renderingAdapter = new Direct3DRenderingAdapter(_controller, _renderer, _renderer.Direct3DDevice, frameRate);

            Width  = controller.Width;
            Height = controller.Height;
            if (_controller.IsFullScreen)
            {
                WindowState = WindowState.Maximized;
            }
            Title = controller.Name;

            InitializeComponent();
            if (_controller.HasUserInterface)
            {
                if (_controller.CentralView != null)
                {
                    MainGrid.Children.Add((UIElement)_controller.CentralView);
                }
                if (_controller.LeftView != null)
                {
                    LeftGrid.Children.Add((UIElement)_controller.LeftView);
                }
                if (_controller.RightView != null)
                {
                    RightGrid.Children.Add((UIElement)_controller.RightView);
                }
                if (_controller.TopView != null)
                {
                    TopGrid.Children.Add((UIElement)_controller.TopView);
                }
                if (_controller.BottomView != null)
                {
                    BottomGrid.Children.Add((UIElement)_controller.BottomView);
                }
            }
            Loaded  += OnLoaded;
            Closing += OnClosing;
            KeyDown += OnKeyPress;
        }
 public Direct3DRenderingAdapter(IController controller, Direct3DRenderer renderer, Device device, double frameRate)
 {
     if (controller == null)
     {
         throw new ArgumentNullException("controller");
     }
     if (renderer == null)
     {
         throw new ArgumentNullException("renderer");
     }
     if (device == null)
     {
         throw new ArgumentNullException("device");
     }
     _controller = controller;
     _renderer   = renderer;
     _frameRate  = frameRate;
     Device      = device;
 }