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."); } }
/// <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; }