anx.framework/Samples/WpfEditor/MainWindow.xaml.cs
Konstantin Koch 6f1b068bf5 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.
2015-10-18 14:31:08 +02:00

65 lines
1.8 KiB
C#

using System;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
using ANX.Framework;
using ANX.Framework.Graphics;
using ANX.Framework.NonXNA;
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace WpfEditor
{
public partial class MainWindow
{
private GraphicsDevice device;
private readonly ThreadStart emptyThreadStart;
public MainWindow()
{
//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);
while (IsVisible && IsActive)
{
if (Application.Current != null)
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, emptyThreadStart);
Tick();
}
}
public void Tick()
{
device.Clear(ClearOptions.Target, Color.CornflowerBlue, 0f, 0);
device.Present();
}
}
}