From 6f1b068bf5d332c6116e88d56dd440e7ecf6c710 Mon Sep 17 00:00:00 2001 From: Konstantin Koch Date: Sun, 18 Oct 2015 14:31:08 +0200 Subject: [PATCH] Migrated WpfEditor, fixed disposing of State objects and added Debug names to the state objects. The WpfEditor doesn't create a new device anymore every time it receives focus. StateObjects get recreated if the used device changes and they get disposed if the parent GraphicsDevice gets disposed. --- .../SharedStateObject.cs | 28 ++- .../BlendState_DX10.cs | 10 +- .../DepthStencilState_DX10.cs | 10 +- .../RasterizerState_DX10.cs | 10 +- .../SamplerState_DX10.cs | 7 + Samples/WpfEditor.sln | 195 +++++++++++++++--- Samples/WpfEditor/MainWindow.xaml.cs | 38 ++-- Samples/WpfEditor/WpfEditor.csproj | 52 ++--- 8 files changed, 277 insertions(+), 73 deletions(-) diff --git a/RenderSystems/ANX.RenderSystem.DX.SharedSources/SharedStateObject.cs b/RenderSystems/ANX.RenderSystem.DX.SharedSources/SharedStateObject.cs index dbee3f1e..add7ad35 100644 --- a/RenderSystems/ANX.RenderSystem.DX.SharedSources/SharedStateObject.cs +++ b/RenderSystems/ANX.RenderSystem.DX.SharedSources/SharedStateObject.cs @@ -17,14 +17,16 @@ namespace ANX.RenderSystem.Windows.DX11 protected const int IntMaxOver16 = int.MaxValue / 16; protected const float ColorByteToFloatFactor = 1f / 255f; - #region Private protected bool isDirty; protected T nativeState; - #endregion - #region Public public bool IsBound { get; protected set; } - #endregion + + protected GraphicsDevice GraphicsDevice + { + get; + private set; + } #region Constructor protected BaseStateObject() @@ -75,13 +77,31 @@ namespace ANX.RenderSystem.Windows.DX11 #region UpdateNativeBlendState private void UpdateNativeBlendState(GraphicsDevice graphics) { + if (graphics != this.GraphicsDevice) + { + if (this.GraphicsDevice != null) + this.GraphicsDevice.ResourceDestroyed -= GraphicsDevice_ResourceDestroyed; + + if (graphics != null) + graphics.ResourceDestroyed += GraphicsDevice_ResourceDestroyed; + + this.GraphicsDevice = graphics; + this.Dispose(); + } + if (isDirty || nativeState == null) { Dispose(); + this.GraphicsDevice = graphics; nativeState = CreateNativeState(graphics); isDirty = false; } } + + void GraphicsDevice_ResourceDestroyed(object sender, ResourceDestroyedEventArgs e) + { + this.Dispose(); + } #endregion protected virtual void Init() { } diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX10/BlendState_DX10.cs b/RenderSystems/ANX.RenderSystem.Windows.DX10/BlendState_DX10.cs index 90e3e2b8..cbe604af 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX10/BlendState_DX10.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX10/BlendState_DX10.cs @@ -21,6 +21,10 @@ namespace ANX.RenderSystem.Windows.DX10 private SharpDX.Color4 blendFactor; private int multiSampleMask; +#if DEBUG + private static int blendStateCount = 0; +#endif + #region Public public Color BlendFactor { @@ -141,7 +145,11 @@ namespace ANX.RenderSystem.Windows.DX10 protected override Dx10.BlendState CreateNativeState(GraphicsDevice graphics) { Dx10.Device device = (graphics.NativeDevice as GraphicsDeviceDX).NativeDevice; - return new Dx10.BlendState(device, ref description); + var blendState = new Dx10.BlendState(device, ref description); +#if DEBUG + blendState.DebugName = "BlendState_" + blendStateCount++; +#endif + return blendState; } protected override void ApplyNativeState(GraphicsDevice graphics) diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX10/DepthStencilState_DX10.cs b/RenderSystems/ANX.RenderSystem.Windows.DX10/DepthStencilState_DX10.cs index 65f19957..084de277 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX10/DepthStencilState_DX10.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX10/DepthStencilState_DX10.cs @@ -19,6 +19,10 @@ namespace ANX.RenderSystem.Windows.DX10 private Dx10.DepthStencilStateDescription description; private int referenceStencil; +#if DEBUG + private static int depthStencilStateCount = 0; +#endif + #region Public (TODO) public StencilOperation CounterClockwiseStencilDepthBufferFail { @@ -172,7 +176,11 @@ namespace ANX.RenderSystem.Windows.DX10 protected override Dx10.DepthStencilState CreateNativeState(GraphicsDevice graphics) { Dx10.Device device = (graphics.NativeDevice as GraphicsDeviceDX).NativeDevice; - return new Dx10.DepthStencilState(device, ref description); + var state = new Dx10.DepthStencilState(device, ref description); +#if DEBUG + state.DebugName = "DepthStencilState_" + depthStencilStateCount++; +#endif + return state; } protected override void ApplyNativeState(GraphicsDevice graphics) diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX10/RasterizerState_DX10.cs b/RenderSystems/ANX.RenderSystem.Windows.DX10/RasterizerState_DX10.cs index 015dcb2f..e6b49cd0 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX10/RasterizerState_DX10.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX10/RasterizerState_DX10.cs @@ -18,6 +18,10 @@ namespace ANX.RenderSystem.Windows.DX10 { private Dx10.RasterizerStateDescription description; +#if DEBUG + private static int rasterizerStateCount = 0; +#endif + #region Public public CullMode CullMode { @@ -90,7 +94,11 @@ namespace ANX.RenderSystem.Windows.DX10 protected override Dx10.RasterizerState CreateNativeState(GraphicsDevice graphics) { Dx10.Device device = (graphics.NativeDevice as GraphicsDeviceDX).NativeDevice; - return new Dx10.RasterizerState(device, ref description); + var state = new Dx10.RasterizerState(device, ref description); +#if DEBUG + state.DebugName = "RasterizerState_" + rasterizerStateCount++; +#endif + return state; } protected override void ApplyNativeState(GraphicsDevice graphics) diff --git a/RenderSystems/ANX.RenderSystem.Windows.DX10/SamplerState_DX10.cs b/RenderSystems/ANX.RenderSystem.Windows.DX10/SamplerState_DX10.cs index da0cacea..ee591d3a 100644 --- a/RenderSystems/ANX.RenderSystem.Windows.DX10/SamplerState_DX10.cs +++ b/RenderSystems/ANX.RenderSystem.Windows.DX10/SamplerState_DX10.cs @@ -18,6 +18,10 @@ namespace ANX.RenderSystem.Windows.DX10 { #region Private private Dx10.SamplerStateDescription description; + +#if DEBUG + private static int samplerStateCount = 0; +#endif #endregion #region Public @@ -105,6 +109,9 @@ namespace ANX.RenderSystem.Windows.DX10 Dispose(); nativeState = new Dx10.SamplerState(device, ref description); isDirty = false; +#if DEBUG + nativeState.DebugName = "SamplerState_" + samplerStateCount++; +#endif } } #endregion diff --git a/Samples/WpfEditor.sln b/Samples/WpfEditor.sln index ba862264..ac858f5a 100644 --- a/Samples/WpfEditor.sln +++ b/Samples/WpfEditor.sln @@ -1,62 +1,211 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleContent", "SampleContent\SampleContent.contentproj", "{FA6E229D-4504-47B1-8A23-2D3FCC13F778}" -EndProject +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfEditor", "WpfEditor\WpfEditor.csproj", "{EFC485F7-3E0A-40AB-B79D-E07FE86FC386}" + ProjectSection(ProjectDependencies) = postProject + {75EFAE60-726E-430F-8661-4CF9ABD1306C} = {75EFAE60-726E-430F-8661-4CF9ABD1306C} + EndProjectSection +EndProject +Project("{75EFAE60-726E-430F-8661-4CF9ABD1306C}") = "SampleContent", "SampleContent\SampleContent.cproj", "{75EFAE60-726E-430F-8661-4CF9ABD1306C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Android = Debug|Android Debug|Any CPU = Debug|Any CPU + Debug|iOS = Debug|iOS + Debug|Linux = Debug|Linux + Debug|Mac OS = Debug|Mac OS Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|PS Vita = Debug|PS Vita + Debug|Windows = Debug|Windows + Debug|Windows Metro = Debug|Windows Metro + Debug|Windows Phone = Debug|Windows Phone Debug|x86 = Debug|x86 + Debug|XBox 360 = Debug|XBox 360 + DebugWin8|Android = DebugWin8|Android DebugWin8|Any CPU = DebugWin8|Any CPU + DebugWin8|iOS = DebugWin8|iOS + DebugWin8|Linux = DebugWin8|Linux + DebugWin8|Mac OS = DebugWin8|Mac OS DebugWin8|Mixed Platforms = DebugWin8|Mixed Platforms + DebugWin8|PS Vita = DebugWin8|PS Vita + DebugWin8|Windows = DebugWin8|Windows + DebugWin8|Windows Metro = DebugWin8|Windows Metro + DebugWin8|Windows Phone = DebugWin8|Windows Phone DebugWin8|x86 = DebugWin8|x86 + DebugWin8|XBox 360 = DebugWin8|XBox 360 + Release|Android = Release|Android Release|Any CPU = Release|Any CPU + Release|iOS = Release|iOS + Release|Linux = Release|Linux + Release|Mac OS = Release|Mac OS Release|Mixed Platforms = Release|Mixed Platforms + Release|PS Vita = Release|PS Vita + Release|Windows = Release|Windows + Release|Windows Metro = Release|Windows Metro + Release|Windows Phone = Release|Windows Phone Release|x86 = Release|x86 + Release|XBox 360 = Release|XBox 360 + ReleaseWin8|Android = ReleaseWin8|Android ReleaseWin8|Any CPU = ReleaseWin8|Any CPU + ReleaseWin8|iOS = ReleaseWin8|iOS + ReleaseWin8|Linux = ReleaseWin8|Linux + ReleaseWin8|Mac OS = ReleaseWin8|Mac OS ReleaseWin8|Mixed Platforms = ReleaseWin8|Mixed Platforms + ReleaseWin8|PS Vita = ReleaseWin8|PS Vita + ReleaseWin8|Windows = ReleaseWin8|Windows + ReleaseWin8|Windows Metro = ReleaseWin8|Windows Metro + ReleaseWin8|Windows Phone = ReleaseWin8|Windows Phone ReleaseWin8|x86 = ReleaseWin8|x86 + ReleaseWin8|XBox 360 = ReleaseWin8|XBox 360 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.Debug|x86.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.DebugWin8|Any CPU.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.DebugWin8|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.DebugWin8|x86.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.Release|Any CPU.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.Release|x86.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.ReleaseWin8|Any CPU.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.ReleaseWin8|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FA6E229D-4504-47B1-8A23-2D3FCC13F778}.ReleaseWin8|x86.ActiveCfg = Debug|Any CPU - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Android.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Any CPU.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|iOS.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Linux.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Mac OS.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|PS Vita.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Windows.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Windows Metro.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|Windows Phone.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|x86.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|x86.Build.0 = Debug|x86 - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Any CPU.ActiveCfg = Debug|Any CPU - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Any CPU.Build.0 = Debug|Any CPU + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Debug|XBox 360.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Android.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Any CPU.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|iOS.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Linux.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Mac OS.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Mixed Platforms.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Mixed Platforms.Build.0 = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|PS Vita.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Windows.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Windows Metro.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|Windows Phone.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|x86.ActiveCfg = Debug|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|x86.Build.0 = Debug|x86 - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Any CPU.Build.0 = Release|Any CPU + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.DebugWin8|XBox 360.ActiveCfg = Debug|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Android.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Any CPU.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|iOS.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Linux.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Mac OS.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Mixed Platforms.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Mixed Platforms.Build.0 = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|PS Vita.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Windows.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Windows Metro.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|Windows Phone.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|x86.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|x86.Build.0 = Release|x86 - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Any CPU.ActiveCfg = Release|Any CPU - {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Any CPU.Build.0 = Release|Any CPU + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.Release|XBox 360.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Android.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Any CPU.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|iOS.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Linux.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Mac OS.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Mixed Platforms.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Mixed Platforms.Build.0 = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|PS Vita.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Windows.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Windows Metro.ActiveCfg = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|Windows Phone.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|x86.ActiveCfg = Release|x86 {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|x86.Build.0 = Release|x86 + {EFC485F7-3E0A-40AB-B79D-E07FE86FC386}.ReleaseWin8|XBox 360.ActiveCfg = Release|x86 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Android.ActiveCfg = Debug|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Android.Build.0 = Debug|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Any CPU.ActiveCfg = Debug|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|iOS.ActiveCfg = Debug|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|iOS.Build.0 = Debug|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Linux.ActiveCfg = Debug|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Linux.Build.0 = Debug|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Mac OS.ActiveCfg = Debug|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Mac OS.Build.0 = Debug|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Mixed Platforms.ActiveCfg = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Mixed Platforms.Build.0 = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|PS Vita.ActiveCfg = Debug|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|PS Vita.Build.0 = Debug|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Windows.ActiveCfg = Debug|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Windows.Build.0 = Debug|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Windows Metro.ActiveCfg = Debug|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Windows Metro.Build.0 = Debug|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Windows Phone.ActiveCfg = Debug|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|Windows Phone.Build.0 = Debug|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|x86.ActiveCfg = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|XBox 360.ActiveCfg = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Debug|XBox 360.Build.0 = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Android.ActiveCfg = Debug|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Android.Build.0 = Debug|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Any CPU.ActiveCfg = Debug|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|iOS.ActiveCfg = Debug|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|iOS.Build.0 = Debug|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Linux.ActiveCfg = Debug|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Linux.Build.0 = Debug|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Mac OS.ActiveCfg = Debug|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Mac OS.Build.0 = Debug|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Mixed Platforms.ActiveCfg = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Mixed Platforms.Build.0 = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|PS Vita.ActiveCfg = Debug|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|PS Vita.Build.0 = Debug|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Windows.ActiveCfg = Debug|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Windows.Build.0 = Debug|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Windows Metro.ActiveCfg = Debug|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Windows Metro.Build.0 = Debug|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Windows Phone.ActiveCfg = Debug|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|Windows Phone.Build.0 = Debug|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|x86.ActiveCfg = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|XBox 360.ActiveCfg = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.DebugWin8|XBox 360.Build.0 = Debug|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Android.ActiveCfg = Release|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Android.Build.0 = Release|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Any CPU.ActiveCfg = Release|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|iOS.ActiveCfg = Release|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|iOS.Build.0 = Release|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Linux.ActiveCfg = Release|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Linux.Build.0 = Release|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Mac OS.ActiveCfg = Release|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Mac OS.Build.0 = Release|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Mixed Platforms.ActiveCfg = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Mixed Platforms.Build.0 = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|PS Vita.ActiveCfg = Release|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|PS Vita.Build.0 = Release|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Windows.ActiveCfg = Release|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Windows.Build.0 = Release|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Windows Metro.ActiveCfg = Release|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Windows Metro.Build.0 = Release|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Windows Phone.ActiveCfg = Release|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|Windows Phone.Build.0 = Release|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|x86.ActiveCfg = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|XBox 360.ActiveCfg = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.Release|XBox 360.Build.0 = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Android.ActiveCfg = Release|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Android.Build.0 = Release|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Any CPU.ActiveCfg = Release|Android + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|iOS.ActiveCfg = Release|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|iOS.Build.0 = Release|iOS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Linux.ActiveCfg = Release|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Linux.Build.0 = Release|Linux + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Mac OS.ActiveCfg = Release|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Mac OS.Build.0 = Release|Mac OS + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Mixed Platforms.ActiveCfg = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Mixed Platforms.Build.0 = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|PS Vita.ActiveCfg = Release|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|PS Vita.Build.0 = Release|PS Vita + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Windows.ActiveCfg = Release|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Windows.Build.0 = Release|Windows + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Windows Metro.ActiveCfg = Release|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Windows Metro.Build.0 = Release|Windows Metro + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Windows Phone.ActiveCfg = Release|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|Windows Phone.Build.0 = Release|Windows Phone + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|x86.ActiveCfg = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|XBox 360.ActiveCfg = Release|XBox 360 + {75EFAE60-726E-430F-8661-4CF9ABD1306C}.ReleaseWin8|XBox 360.Build.0 = Release|XBox 360 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Samples/WpfEditor/MainWindow.xaml.cs b/Samples/WpfEditor/MainWindow.xaml.cs index 624cdafc..304fa403 100644 --- a/Samples/WpfEditor/MainWindow.xaml.cs +++ b/Samples/WpfEditor/MainWindow.xaml.cs @@ -19,20 +19,33 @@ namespace WpfEditor public MainWindow() { - InitializeComponent(); - emptyThreadStart = delegate { }; - //AddInSystemFactory.Instance.SetPreferredSystem(AddInType.RenderSystem, "OpenGL3"); AddInSystemFactory.Instance.SetPreferredSystem(AddInType.RenderSystem, "DirectX10"); + + InitializeComponent(); + emptyThreadStart = delegate { }; } + protected override void OnInitialized(EventArgs e) + { + base.OnInitialized(e); + + device = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, GraphicsProfile.HiDef, + new PresentationParameters + { + BackBufferWidth = GamePanel.Width, + BackBufferHeight = GamePanel.Height, + BackBufferFormat = SurfaceFormat.Color, + DeviceWindowHandle = new WindowHandle(GamePanel.Handle), + PresentationInterval = PresentInterval.Default, + }); + } + protected override void OnActivated(EventArgs e) { base.OnActivated(e); - Initialize(); - - while (IsVisible) + while (IsVisible && IsActive) { if (Application.Current != null) Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, emptyThreadStart); @@ -41,19 +54,6 @@ namespace WpfEditor } } - public void Initialize() - { - device = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, GraphicsProfile.HiDef, - new PresentationParameters - { - BackBufferWidth = GamePanel.Width, - BackBufferHeight = GamePanel.Height, - BackBufferFormat = SurfaceFormat.Color, - DeviceWindowHandle = new WindowHandle(GamePanel.Handle), - PresentationInterval = PresentInterval.Default, - }); - } - public void Tick() { device.Clear(ClearOptions.Target, Color.CornflowerBlue, 0f, 0); diff --git a/Samples/WpfEditor/WpfEditor.csproj b/Samples/WpfEditor/WpfEditor.csproj index 2dc9fce7..697819f0 100644 --- a/Samples/WpfEditor/WpfEditor.csproj +++ b/Samples/WpfEditor/WpfEditor.csproj @@ -25,6 +25,7 @@ DEBUG;TRACE prompt 4 + true x86 @@ -38,6 +39,9 @@ anx.ico + + Always + @@ -98,35 +102,35 @@ - - {6899F0C9-70B9-4EB0-9DD3-E598D4BE3E35} - ANX.Framework - - - {60D08399-244F-46A3-91F1-4CFD26D961A3} - ANX.InputDevices.Windows.XInput - - - {49066074-3B7B-4A55-B122-6BD33AB73558} - ANX.InputSystem.Standard - - - {EB8258E0-6741-4DB9-B756-1EBDF67B1ED6} - ANX.RenderSystem.GL3 - - - {5BE49183-2F6F-4527-AC90-D816911FCF90} - ANX.RenderSystem.Windows.DX10 - - - {14EF49AB-6D3F-458D-9D5C-D120B86EDD7A} - ANX.SoundSystem.OpenAL - + + ..\..\bin\Debug\ANX.Framework.dll + + + ..\..\bin\Debug\ANX.InputDevices.Windows.XInput.dll + + + ..\..\bin\Debug\ANX.InputSystem.Standard.dll + + + ..\..\bin\Debug\ANX.PlatformSystem.Windows.dll + + + ..\..\bin\Debug\ANX.RenderSystem.Windows.DX10.dll + + + ..\..\bin\Debug\ANX.RenderSystem.GL3.dll + + + ..\..\bin\Debug\ANX.SoundSystem.OpenAL.dll + + + xcopy $(ProjectDir)..\SampleContent\bin\$(ConfigurationName) $(TargetDir)SampleContent\ /D /E /Y +