public RenderStereoTextureCommand(int width, int height, StereoRenderer stereoRenderer)
            : base(width, height, stereoRenderer.Scene)
        {
            this.CommandAttributes |= CommandAttributes.StereoRendering;
            this.sceneManager = stereoRenderer.Scene;
            this.stereoRenderer = stereoRenderer;
            this.stereoCamera = (StereoCamera)stereoRenderer.Camera;
            this.stereoCamera.StereoParametersChanged += RequestUpdate;

            Texture2DDescription StereoTextureDesc = new Texture2DDescription
            {
                ArraySize = 1,
                BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource,
                CpuAccessFlags = CpuAccessFlags.None,
                Format = Format.R8G8B8A8_UNorm,
                Width = 2 * width,
                Height = height,
                MipLevels = 1,
                OptionFlags = ResourceOptionFlags.None,
                SampleDescription = new SampleDescription(1, 0),
                Usage = ResourceUsage.Default
            };

            Texture = new Texture2D(Game.Context.Device, StereoTextureDesc);
        }
Beispiel #2
0
 protected Renderer(IDeviceContext deviceContext)
 {
     DeviceContext = deviceContext;
     DeviceContext.DeviceDisposing += OnDisposing;
     DeviceContext.DeviceResize += OnDeviceResize;
     DeviceContext.DeviceSuspend += OnDeviceSuspend;
     DeviceContext.DeviceResume += OnDeviceResume;
     Scene = new SceneManager();
     Camera = new QuaternionCam();
     buffers = new List<SlimDX.Direct3D11.Buffer>();
 }
        public RenderToTextureCommand(int width, int height, SceneManager sceneTree)
            : base(CommandType.Action)
        {
            SceneTree = sceneTree;
            RenderTextureDesc = new Texture2DDescription
            {
                ArraySize = 1,
                BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource,
                CpuAccessFlags = CpuAccessFlags.None,
                Format = Format.R8G8B8A8_UNorm,
                Width = width,
                Height = height,
                MipLevels = 1,
                OptionFlags = ResourceOptionFlags.None,
                SampleDescription = new SampleDescription(1, 0),
                Usage = ResourceUsage.Default
            };

            texture = new Texture2D(Game.Context.Device, RenderTextureDesc);

            Texture2DDescription depthBufferDesc = new Texture2DDescription
            {
                ArraySize = 1,
                BindFlags = BindFlags.DepthStencil,
                CpuAccessFlags = CpuAccessFlags.None,
                Format = Format.D32_Float,
                Width = width,
                Height = height,
                MipLevels = 1,
                OptionFlags = ResourceOptionFlags.None,
                SampleDescription = new SampleDescription(1, 0),
                Usage = ResourceUsage.Default
            };

            using (Texture2D depthBuffer = new Texture2D(Game.Context.Device, depthBufferDesc))
            {
                DepthStencilView = new DepthStencilView(Game.Context.Device, depthBuffer);
            }

            RenderTargetView = new RenderTargetView(Game.Context.Device, texture);
        }
Beispiel #4
0
        public void AddToScene(Renderer renderer, SceneManager scene)
        {
            UIMaterial uiMaterial = new UIMaterial();

            RenderableNode rNode = new RenderableNode(InterfaceMesh);
            CameraOverlayNode caNode = new CameraOverlayNode(renderer.Camera);

            caNode.AppendChild(rNode);

            uiRCommand = new UserInterfaceRenderCommand(renderer, this, rNode);

            uiUCommand = new UserInterfaceUpdateCommand(this, uiRCommand);

            scene.Tree.RootNode.AppendChild(caNode);
            scene.CommandManager.AddUpdateCommand(uiUCommand);
            scene.CommandManager.AddBaseCommands(uiMaterial.PreRenderStates);
            scene.CommandManager.AddRenderCommand(uiRCommand);
            scene.CommandManager.AddBaseCommands(uiMaterial.PostRenderStates);
        }