コード例 #1
0
ファイル: Direct3D10DemoApp.cs プロジェクト: wyrover/SharpDX
        protected override void Initialize(DemoConfiguration demoConfiguration)
        {
            // SwapChain description
            var desc = new SwapChainDescription()
            {
                BufferCount     = 1,
                ModeDescription =
                    new ModeDescription(demoConfiguration.Width, demoConfiguration.Height,
                                        new Rational(60, 1), Format.R8G8B8A8_UNorm),
                IsWindowed        = true,
                OutputHandle      = DisplayHandle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect        = SwapEffect.Discard,
                Usage             = Usage.RenderTargetOutput
            };

            // Create Device and SwapChain
            Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, desc, FeatureLevel.Level_10_0, out _device, out _swapChain);

            // Ignore all windows events
            Factory factory = _swapChain.GetParent <Factory>();

            factory.MakeWindowAssociation(DisplayHandle, WindowAssociationFlags.IgnoreAll);

            // New RenderTargetView from the backbuffer
            _backBuffer = Texture2D.FromSwapChain <Texture2D>(_swapChain, 0);

            _backBufferView = new RenderTargetView(_device, _backBuffer);
        }
コード例 #2
0
        private void Initialize()
        {
            // Create the form
            form = CreateForm();

            // SwapChain description
            var desc = new SwapChainDescription()
            {
                BufferCount     = 1,
                ModeDescription =
                    new ModeDescription((int)Config.SCREEN_WIDTH, (int)Config.SCREEN_HEIGHT,
                                        new Rational(60, 1), Format.R8G8B8A8_UNorm),
                IsWindowed        = true,
                OutputHandle      = form.Handle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect        = SwapEffect.Discard,
                Usage             = Usage.RenderTargetOutput
            };

            //Create the device and swapchain
            try
            {
                Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, desc, out device, out swapChain);
            }
            catch (Exception e)
            {
                Device1.CreateWithSwapChain(DriverType.Warp, DeviceCreationFlags.BgraSupport, desc, out device, out swapChain);
                Console.WriteLine("Could not create Hardware drivertype, using Warp instead. \n" + e.ToString());
            }

            // Ignore all Windows events
            SharpDX.DXGI.Factory factory = swapChain.GetParent <SharpDX.DXGI.Factory>();
            factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);

            // New RenderTargetView from the backbuffer
            backBuffer     = Texture2D.FromSwapChain <Texture2D>(swapChain, 0);
            backBufferView = new RenderTargetView(device, backBuffer);

            // Create the rendertarget for the form
            factory2D = new SharpDX.Direct2D1.Factory();
            Surface surface = backBuffer.QueryInterface <Surface>();

            renderTarget = new RenderTarget(factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied)));
            renderTarget.AntialiasMode = AntialiasMode.Aliased;
            // Initialize the global resources used for drawing and writing.
            Resources.Initialize(renderTarget);
            runnableComponent.InitBase();
        }
コード例 #3
0
        private GraphicCore()
        {
            form                 = new RenderForm("");
            form.Width           = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
            form.Height          = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
            form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
            form.ControlBox      = false;
            form.MaximizeBox     = false;
            var desc = new SwapChainDescription()
            {
                BufferCount     = 1,
                ModeDescription =
                    new ModeDescription(form.Width, form.Height, new Rational(frame_rate, 1), Format.R8G8B8A8_UNorm),
                IsWindowed        = true,
                OutputHandle      = form.Handle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect        = SwapEffect.Discard,
                Usage             = Usage.RenderTargetOutput
            };

            Camera.width  = form.Width;
            Camera.height = form.Height;

            Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, desc,
                                        SharpDX.Direct3D10.FeatureLevel.Level_10_0, out device, out swapChain);

            factory2d   = new SharpDX.Direct2D1.Factory();
            factoryText = new SharpDX.DirectWrite.Factory();

            // Ignore all windows events
            factoryDX = swapChain.GetParent <SharpDX.DXGI.Factory>();
            //factoryDX.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);

            Texture2D backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0);
            var       renderView = new RenderTargetView(device, backBuffer);

            Surface surface = backBuffer.QueryInterface <Surface>();

            this.render2d = new RenderTarget(factory2d, surface,
                                             new RenderTargetProperties(new SharpDX.Direct2D1.PixelFormat(Format.Unknown, AlphaMode.Premultiplied)));

            brush      = new SolidColorBrush(this.render2d, Color.White);
            _isRunning = true;
        }
コード例 #4
0
ファイル: GameWindow.cs プロジェクト: fnatte/TowerDefence
        protected virtual void InitializeGraphicsInterface()
        {
            var desc = new SwapChainDescription()
            {
                BufferCount       = 1,
                ModeDescription   = new ModeDescription(form.Width, form.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm),
                IsWindowed        = true,
                OutputHandle      = DisplayHandle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect        = SwapEffect.Discard,
                Usage             = Usage.RenderTargetOutput
            };

            // Create device and swapchain
            Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, desc, FeatureLevel.Level_10_0, out device, out swapChain);

            // Ignore all windows events
            SharpDX.DXGI.Factory factory = swapChain.GetParent <SharpDX.DXGI.Factory>();
            factory.MakeWindowAssociation(DisplayHandle, WindowAssociationFlags.IgnoreAll);

            // New RenderTargetView from the backbuffer
            BackBuffer     = Texture2D.FromSwapChain <Texture2D>(swapChain, 0);
            BackBufferView = new RenderTargetView(device, BackBuffer);
        }
コード例 #5
0
        private static void Main()
        {
            var form = new RenderForm("SharpDX - MiniTri Direct2D - Direct3D 10 Sample");

            // SwapChain description
            var desc = new SwapChainDescription()
            {
                BufferCount     = 1,
                ModeDescription =
                    new ModeDescription(form.ClientSize.Width, form.ClientSize.Height,
                                        new Rational(60, 1), Format.R8G8B8A8_UNorm),
                IsWindowed        = true,
                OutputHandle      = form.Handle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect        = SwapEffect.Discard,
                Usage             = Usage.RenderTargetOutput
            };

            // Create Device and SwapChain
            Device1   device;
            SwapChain swapChain;

            Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.Debug | DeviceCreationFlags.BgraSupport, desc, FeatureLevel.Level_10_0, out device, out swapChain);

            var d2dFactory = new SharpDX.Direct2D1.Factory();

            int width  = form.ClientSize.Width;
            int height = form.ClientSize.Height;

            var rectangleGeometry = new RoundedRectangleGeometry(d2dFactory, new RoundedRect()
            {
                RadiusX = 32, RadiusY = 32, Rect = new RectangleF(128, 128, width - 128, height - 128)
            });

            // Ignore all windows events
            Factory factory = swapChain.GetParent <Factory>();

            factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);

            // New RenderTargetView from the backbuffer
            Texture2D backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0);
            var       renderView = new RenderTargetView(device, backBuffer);

            Surface surface = backBuffer.QueryInterface <Surface>();


            var d2dRenderTarget = new RenderTarget(d2dFactory, surface,
                                                   new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied)));

            var solidColorBrush = new SolidColorBrush(d2dRenderTarget, new Color4(1, 1, 1, 1));

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            // Main loop
            RenderLoop.Run(form, () =>
            {
                d2dRenderTarget.BeginDraw();
                d2dRenderTarget.Clear(new Color4(1.0f, 0.0f, 0.0f, 0.0f));
                solidColorBrush.Color = new Color4((float)Math.Abs(Math.Cos(stopwatch.ElapsedMilliseconds * .001)), 1, 1, 1);
                d2dRenderTarget.FillGeometry(rectangleGeometry, solidColorBrush, null);
                d2dRenderTarget.EndDraw();

                swapChain.Present(0, PresentFlags.None);
            });

            // Release all resources
            renderView.Release();
            backBuffer.Release();
            device.ClearState();
            device.Flush();
            device.Release();
            device.Release();
            swapChain.Release();
            factory.Release();
        }
コード例 #6
0
        /// <summary>
        /// A Game powered by SharpDX
        /// </summary>
        /// <param name="Width">The width of the window</param>
        /// <param name="Height">The height of the window</param>
        static public void Initialize(SharpDX_Engine.Utitities.Size Size)
        {
            GC.Collect();

            form = new RenderForm();
            form.StartPosition   = FormStartPosition.CenterScreen;
            form.ClientSize      = new System.Drawing.Size((int)Size.width, (int)Size.height);
            form.MaximizeBox     = false;
            form.FormBorderStyle = FormBorderStyle.FixedSingle;
            form.FormClosed     += form_FormClosed;

            // SwapChain description
            SwapChainDescription desc = new SwapChainDescription()
            {
                BufferCount     = 1,
                ModeDescription =
                    new ModeDescription(form.ClientSize.Width, form.ClientSize.Height,
                                        new Rational(60, 1), Format.R8G8B8A8_UNorm),
                IsWindowed        = true,
                OutputHandle      = form.Handle,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect        = SwapEffect.Discard,
                Usage             = Usage.RenderTargetOutput
            };

            // Create Device and SwapChain
            Device1.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, desc, FeatureLevel.Level_10_0, out device, out swapChain);

            var d2dFactory = new SharpDX.Direct2D1.Factory();

            // Ignore all windows events
            Factory factory = swapChain.GetParent <Factory>();

            factory.MakeWindowAssociation(form.Handle, WindowAssociationFlags.IgnoreAll);

            // New RenderTargetView from the backbuffer
            Texture2D        backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0);
            RenderTargetView renderView = new RenderTargetView(device, backBuffer);

            Surface surface = backBuffer.QueryInterface <Surface>();

            RenderTarget d2dRenderTarget = new RenderTarget(d2dFactory, surface,
                                                            new RenderTargetProperties(new SharpDX.Direct2D1.PixelFormat(Format.Unknown, AlphaMode.Premultiplied)));

            form.SizeChanged += form_SizeChanged;
            form.GotFocus    += form_GotFocus;
            form.LostFocus   += form_LostFocus;
            form.Move        += form_Move;
            WindowPosition    = new Coordinate(
                form.Location.X + SystemInformation.FixedFrameBorderSize.Width + SystemInformation.DragSize.Width,
                form.Location.Y + SystemInformation.FixedFrameBorderSize.Height + SystemInformation.CaptionHeight + SystemInformation.DragSize.Height
                );
            TextureManager = new TextureManager(d2dRenderTarget);
            //x swapChain.IsFullScreen = true;
            Game.Size = Size;
            Renderer  = new Renderer(d2dRenderTarget);
            Input     = new InputManager();
            Sound     = new Sound.Sound();

            Stopwatch = new Stopwatch();
            Stopwatch.Start();

            Scene = new DummyScene();

            UpdateThread = new Thread(UpdateScene);
        }