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; }
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; }
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); }