Пример #1
0
        /// <summary>
        /// Create Render targets
        /// </summary>
        /// <param name="cameraResources">camera Resources</param>
        /// <param name="newWidth">render width</param>
        /// <param name="newHeight">render height</param>
        /// <param name="backBufferPointer">target handle</param>
        /// <param name="adapter">adapter instance</param>
        /// <param name="renderTargetManager">render Target Manager</param>
        private void CreateRenderTargets(CameraResources cameraResources, int newWidth, int newHeight, int backBufferPointer, Adapter.Adapter adapter, RenderTargetManager renderTargetManager)
        {
            adapter.SetSize(newWidth, newHeight);

            DepthTexture depthTexture = renderTargetManager.CreateDepthTexture(newWidth, newHeight);

            var lenght = cameraResources.IsRenderingStereoscopic ? 2 : 1;

            for (int i = 0; i < lenght; i++)
            {
                RenderTargetViewDescription rtViewDescription = new RenderTargetViewDescription()
                {
                    Format         = cameraResources.BackBufferTexture2D.Description.Format,
                    Dimension      = RenderTargetViewDimension.Texture2DArray,
                    Texture2DArray = new RenderTargetViewDescription.Texture2DArrayResource()
                    {
                        FirstArraySlice = i,
                        ArraySize       = 1,
                        MipSlice        = 0
                    }
                };

                var renderTarget = renderTargetManager.CreateRenderTarget(cameraResources.BackBufferTexture2D, rtViewDescription);
                renderTarget.DepthTexture = depthTexture;

                var eyeTexture = new VREyeTexture()
                {
                    Viewport     = new Viewport(0, 0, 1, 1),
                    NearPlane    = 0.01f,
                    FarPlane     = 1000,
                    RenderTarget = renderTarget
                };

                this.eyesProperties[i].Texture = eyeTexture;
            }

            var eyeRT = this.eyesProperties[0].Texture.RenderTarget;
            var dxRT  = renderTargetManager.TargetFromHandle <DXRenderTarget>(eyeRT.TextureHandle);

            adapter.GraphicsDevice.BackBuffer = dxRT.TargetView;
        }