예제 #1
0
 private void DestroyAllObjects()
 {
     _frameCommands.Dispose();
     _sc.DestroyDeviceObjects();
     _scene.DestroyAllDeviceObjects();
     CommonMaterials.DestroyAllDeviceObjects();
     StaticResourceCache.DestroyAllDeviceObjects();
     _gd.WaitForIdle();
 }
예제 #2
0
        private void ChangeRenderContext(GraphicsBackend backend)
        {
            _sc.DestroyDeviceObjects();
            _scene.DestroyAllDeviceObjects();
            CommonMaterials.DestroyAllDeviceObjects();

            _rc.Dispose();

            if (_recreateWindow)
            {
                WindowCreateInfo windowCI = new WindowCreateInfo
                {
                    X                  = _window.X,
                    Y                  = _window.Y,
                    WindowWidth        = _window.Width,
                    WindowHeight       = _window.Height,
                    WindowInitialState = _window.WindowState,
                    WindowTitle        = "Veldrid NeoDemo"
                };

                _window.Close();

                _window          = VeldridStartup.CreateWindow(ref windowCI);
                _window.Resized += () => _windowResized = true;
            }

            RenderContextCreateInfo rcCI = new RenderContextCreateInfo
            {
                Backend = backend
            };

            _rc = VeldridStartup.CreateRenderContext(ref rcCI, _window);

            _sc.CreateDeviceObjects(_rc);
            _scene.CreateAllDeviceObjects(_rc);
            CommonMaterials.CreateAllDeviceObjects(_rc);
        }