예제 #1
0
        public virtual void Dispose()
        {
            foreach (Engine_Picture picture in m_Pictures)
            {
                picture.Dispose();
            }
            m_Pictures.Clear();

            foreach (Engine_Font font in m_Fonts)
            {
                font.Dispose();
            }
            m_Fonts.Clear();

            foreach (Engine_Sound sound in m_Sounds)
            {
                sound.Dispose();
            }
            m_Sounds.Clear();

            foreach (Engine_Music music in m_Music)
            {
                music.Dispose();
            }
            m_Music.Clear();

            dIDevice.Dispose();
            dIDevice = null;
// Kommenter ut disse 2 linjer under "dsDevice..." om du ikke har lydkort
            dsDevice.Dispose();
            dsDevice = null;
            DXSprite.Dispose();
            DXSprite = null;
            dGDevice.Dispose();
            dGDevice = null;
            m_GameWindow.Dispose();
            m_GameWindow = null;
            m_Disposed   = true;
        }
예제 #2
0
        public virtual void Dispose()
        {
            foreach (Picture picture in m_Pictures)
            {
                picture.Dispose();
            }
            m_Pictures.Clear();

            foreach (Font font in m_Fonts)
            {
                font.Dispose();
            }
            m_Fonts.Clear();

            foreach (Sound sound in m_Sounds)
            {
                sound.Dispose();
            }
            m_Sounds.Clear();

            foreach (Music music in m_Music)
            {
                music.Dispose();
            }
            m_Music.Clear();

            dIDevice.Dispose();
            dIDevice = null;
            dsDevice.Dispose();
            dsDevice = null;
            DXSprite.Dispose();
            DXSprite = null;
            dGDevice.Dispose();
            dGDevice = null;
            m_GameWindow.Dispose();
            m_GameWindow = null;
            m_Disposed   = true;
        }
예제 #3
0
        private int Present(IntPtr swapChainPtr, int syncInterval, PresentFlags flags)
        {
            SwapChain swapChain = (SharpDX.DXGI.SwapChain)swapChainPtr;

            swapChain.GetDevice(typeof(SharpDX.Direct3D11.Device).GUID, out IntPtr deviceOut);
            var           device        = new SharpDX.Direct3D11.Device(deviceOut);
            DeviceContext deviceContext = new DeviceContext(device);

            if (this.isFirst)
            {
                isFirst       = false;
                this.srvFront = GetShaderResourceView(device, Brushes.Gold);
                this.srvback  = GetShaderResourceView(device, Brushes.Red);

                var stencilDesc = new DepthStencilStateDescription()
                {
                    DepthComparison  = Comparison.Less,
                    IsDepthEnabled   = true,
                    IsStencilEnabled = true,
                    StencilReadMask  = 0xFF,
                    StencilWriteMask = 0xFF,
                    FrontFace        = new DepthStencilOperationDescription()
                    {
                        FailOperation      = StencilOperation.Keep,
                        DepthFailOperation = StencilOperation.Increment,
                        PassOperation      = StencilOperation.Keep,
                        Comparison         = Comparison.Always
                    },
                    BackFace = new DepthStencilOperationDescription()
                    {
                        FailOperation      = StencilOperation.Keep,
                        DepthFailOperation = StencilOperation.Decrement,
                        PassOperation      = StencilOperation.Keep,
                        Comparison         = Comparison.Always
                    }
                };
                stencilDesc.IsDepthEnabled = false;
                stencilDesc.DepthWriteMask = DepthWriteMask.All;
                depthStencilStateDisabled  = new DepthStencilState(deviceContext.Device, stencilDesc);


                stencilDesc.IsDepthEnabled   = true;
                stencilDesc.DepthWriteMask   = DepthWriteMask.All;
                stencilDesc.DepthComparison  = Comparison.GreaterEqual;
                stencilDesc.IsStencilEnabled = false;
                stencilDesc.StencilReadMask  = 0xFF;
                stencilDesc.StencilWriteMask = 0x0;

                stencilDesc.FrontFace.FailOperation      = StencilOperation.Zero;
                stencilDesc.FrontFace.DepthFailOperation = StencilOperation.Zero;
                stencilDesc.FrontFace.PassOperation      = StencilOperation.Keep;
                stencilDesc.FrontFace.Comparison         = Comparison.Equal;

                stencilDesc.BackFace.FailOperation      = StencilOperation.Zero;
                stencilDesc.BackFace.DepthFailOperation = StencilOperation.Zero;
                stencilDesc.BackFace.PassOperation      = StencilOperation.Zero;
                stencilDesc.BackFace.Comparison         = Comparison.Never;
                depthStencilStateReadonly = new DepthStencilState(deviceContext.Device, stencilDesc);
            }

            Dx11.DXFont dXFont = new Dx11.DXFont(device, deviceContext);
            dXFont.Initialize("宋体", 14, FontStyle.Bold, true);
            DXSprite dXSprite = new DXSprite(device, deviceContext);

            dXSprite.DrawString(50, 50, "ceshi", 255, 255, 233, 233, dXFont);


            swapChain.Present(syncInterval, flags);
            return(SharpDX.Result.Ok.Code);
        }