예제 #1
0
        protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);
            if (MainWindow is MainWindow wind)
            {
                window = wind;
                window.RequestStats += MainForm_RequestStats;

                panel             = window.Panel;
                panel.Ready      += Panel_Ready;
                panel.Destroying += Panel_Destroying;

                canceller = new CancellationTokenSource();

                keys = new Win32KeyEventSource(canceller.Token);
                keys.AddKeyAlias("up", Keys.Up);
                keys.AddKeyAlias("down", Keys.Down);
                keys.AddKeyAlias("left", Keys.Left);
                keys.AddKeyAlias("right", Keys.Right);
                keys.DefineAxis("horizontal", "left", "right");
                keys.DefineAxis("forward", "up", "down");

                mouse        = new Win32MouseMoveEventSource(canceller.Token);
                mouse.Moved += Mouse_Moved;
            }
        }
예제 #2
0
        private static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.ThreadException += Application_ThreadException;

            using var form       = window = new MainWindow();
            panel                = form.Panel;
            panel.Ready         += Panel_Ready;
            panel.Destroying    += Panel_Destroying;
            window.RequestStats += MainForm_RequestStats;

            canceller = new CancellationTokenSource();

            keys = new Win32KeyEventSource(canceller.Token);
            keys.AddKeyAlias("up", Keys.Up);
            keys.AddKeyAlias("down", Keys.Down);
            keys.AddKeyAlias("left", Keys.Left);
            keys.AddKeyAlias("right", Keys.Right);
            keys.DefineAxis("horizontal", "left", "right");
            keys.DefineAxis("forward", "up", "down");

            mouse        = new Win32MouseMoveEventSource(canceller.Token);
            mouse.Moved += Mouse_Moved;

            Application.Run(form);
        }
예제 #3
0
 protected VeldridProgram(GraphicsDeviceOptions options, IVeldridPanel panel, IDataSource dataSource, CancellationToken token)
     : this(PrefferedBackend, options, panel, dataSource, token)
 {
 }
예제 #4
0
        protected VeldridProgram(GraphicsBackend backend, GraphicsDeviceOptions options, IVeldridPanel panel, IDataSource dataSource, CancellationToken token)
        {
            if (panel is null)
            {
                throw new ArgumentNullException(nameof(panel));
            }

            if (dataSource is null)
            {
                throw new ArgumentNullException(nameof(dataSource));
            }

            DataSource = dataSource;

            Device = Init(
                backend,
                options,
                panel.VeldridSwapchainSource,
                panel.RenderWidth, panel.RenderHeight);

            commandList = Device.ResourceFactory.CreateCommandList();
            canceller   = token;
            ownDevice   = true;

            Camera = new Camera
            {
                AspectRatio = AspectRatio,
                Position    = 2.5f * Vector3.UnitZ
            };

            panel.Resize += (o, e) => Resize(panel.RenderWidth, panel.RenderHeight);
        }
예제 #5
0
 public VeldridDemoProgram(GraphicsDeviceOptions options, IVeldridPanel panel, CancellationToken token)
     : base(options, panel, AsmSource, token)
 {
 }