private void DX11ImageSourceRenderer_OnNewBufferCreated(object sender, Texture2DArgs e)
 {
     try
     {
         if (surfaceD3D == null)
         {
             Debug.WriteLine("Create new D3DImageSource");
             surfaceD3D = new DX11ImageSource(EffectsManager.AdapterIndex);
             surfaceD3D.IsFrontBufferAvailableChanged += SurfaceD3D_IsFrontBufferAvailableChanged;
         }
         surfaceD3D.SetRenderTargetDX11(e.Texture.Resource as Texture2D);
     }
     catch (Exception ex)
     {
         Logger.Log(HelixToolkit.Logger.LogLevel.Error, $"Failed to create surfaceD3D. Ex: {ex.Message}");
         hasBackBuffer = false;
         surfaceD3D.IsFrontBufferAvailableChanged -= SurfaceD3D_IsFrontBufferAvailableChanged;
         RemoveAndDispose(ref surfaceD3D);
         hasBackBuffer = false;
         EndD3D();
         ReinitializeEffectsManager();
         return;
     }
     hasBackBuffer = e.Texture.Resource is Texture2D;
     OnImageSourceChanged(this, new DX11ImageSourceArgs(surfaceD3D));
     if (hasBackBuffer)
     {
         Logger.Log(HelixToolkit.Logger.LogLevel.Information, $"New back buffer is set.");
     }
     else
     {
         Logger.Log(HelixToolkit.Logger.LogLevel.Information, $"Set back buffer failed.");
     }
 }
 private void DX11ImageSourceRenderer_OnNewBufferCreated(object sender, Texture2DArgs e)
 {
     if (surfaceD3D == null)
     {
         Debug.WriteLine("Create new D3DImageSource");
         surfaceD3D = Collect(new DX11ImageSource(EffectsManager.AdapterIndex));
     }
     surfaceD3D.SetRenderTargetDX11(e.Texture.Resource as Texture2D);
     OnImageSourceChanged(this, new DX11ImageSourceArgs(surfaceD3D));
 }
 private void DX11ImageSourceRenderer_OnNewBufferCreated(object sender, Texture2DArgs e)
 {
     if (surfaceD3D == null)
     {
         Debug.WriteLine("Create new D3DImageSource");
         surfaceD3D = Collect(new DX11ImageSource(EffectsManager.AdapterIndex));
         surfaceD3D.IsFrontBufferAvailableChanged += SurfaceD3D_IsFrontBufferAvailableChanged;
     }
     surfaceD3D.SetRenderTargetDX11(e.Texture.Resource as Texture2D);
     hasBackBuffer = e.Texture.Resource is Texture2D;
     OnImageSourceChanged(this, new DX11ImageSourceArgs(surfaceD3D));
     if (hasBackBuffer)
     {
         Logger.Log(HelixToolkit.Logger.LogLevel.Information, $"New back buffer is set.");
     }
     else
     {
         Logger.Log(HelixToolkit.Logger.LogLevel.Information, $"Set back buffer failed.");
     }
 }
Esempio n. 4
0
        /// <summary>
        /// 
        /// </summary>
        private void StartD3D()
        {
            if (EffectsManager == null || RenderTechniquesManager == null)
            {
                // Make sure both are null
                RenderTechniquesManager = null;
                EffectsManager = null;
                RenderTechniquesManager = new DefaultRenderTechniquesManager();
                EffectsManager = new DefaultEffectsManager(RenderTechniquesManager);
                return; // StardD3D() is called from DP changed handler
            }

            surfaceD3D = new DX11ImageSource(EffectsManager.AdapterIndex);
            surfaceD3D.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged;
            device = EffectsManager.Device;
            deferredRenderer = new DeferredRenderer();
            renderRenderable.DeferredRenderer = deferredRenderer;

            CreateAndBindTargets();
            SetDefaultRenderTargets();
            Source = surfaceD3D;
            InvalidateRender();
        }
 public DX11ImageSourceArgs(DX11ImageSource source)
 {
     Source = source;
 }