public void OnDeviceEnd() { if (m_resource != null) { m_resource.Dispose(); m_resource = null; } if (m_dsv != null) { m_dsv.Dispose(); } if (m_dsv_roDepth != null) { m_dsv_roDepth.Dispose(); } if (m_dsv_roStencil != null) { m_dsv_roStencil.Dispose(); } if (m_dsv_ro != null) { m_dsv_ro.Dispose(); } m_srvDepth.OnDeviceEnd(); m_srvStencil.OnDeviceEnd(); }
public void OnDeviceEnd() { m_resource.Dispose(); m_resource = null; m_formatSRgb.OnDeviceEnd(); m_formatLinear.OnDeviceEnd(); }
internal virtual void Release() { if (m_resource != null) { m_resource.Dispose(); m_resource = null; } }
public void Dispose() { Texture?.Dispose(); Target?.Dispose(); _resource?.Dispose(); _sharedResource?.Dispose(); _event?.Dispose(); }
public void Destroy() { TextureState = FileTextureState.Unloaded; if (m_ownsData) { m_srv.Dispose(); m_resource.Dispose(); } m_srv = null; m_resource = null; }
public void OnDeviceEndInternal() { if (m_srv != null) { m_srv.Dispose(); m_srv = null; } if (m_resource != null) { m_resource.Dispose(); m_resource = null; } }
public void OnDeviceEnd() { m_resource.Dispose(); m_resource = null; m_dsv.Dispose(); m_dsv_roDepth.Dispose(); m_dsv_roStencil.Dispose(); m_dsv_ro.Dispose(); m_srvDepth.OnDeviceEnd(); m_srvStencil.OnDeviceEnd(); }
public void Clear() { if (m_resource != null) { m_resource.Dispose(); m_resource = null; } if (m_srv != null) { m_srv.Dispose(); m_srv = null; } }
protected internal void Dispose() { if (m_resource != null) { m_resource.Dispose(); m_resource = null; } if (m_srv != null) { m_srv.Dispose(); m_srv = null; } }
public void OnDeviceEnd() { ByteSize = 0; if (m_srv != null) { m_srv.Dispose(); m_srv = null; } if (m_resource != null) { m_resource.Dispose(); m_resource = null; } }
private void D3DImage_OnRender(IntPtr surface, bool isNewSurface) { if (isNewSurface) { Context.DestroyBuffers(); // Yikes - from https://github.com/microsoft/WPFDXInterop/blob/master/samples/D3D11Image/D3D11Visualization/D3DVisualization.cpp#L384 ComObject res = ComObject.FromPointer <ComObject>(surface); SharpDX.DXGI.Resource resource = res.QueryInterface <SharpDX.DXGI.Resource>(); IntPtr sharedHandle = resource.SharedHandle; resource.Dispose(); SharpDX.Direct3D11.Resource d3dres = Context.Device.OpenSharedResource <SharpDX.Direct3D11.Resource>(sharedHandle); Context.UpdateSize(RenderWidth, RenderHeight, (int width, int height) => d3dres.QueryInterface <Texture2D>()); d3dres.Dispose(); } Context.UpdateScene(0.1f); // TODO: Measure elapsed time! Context.RenderScene(); Render?.Invoke(this, new EventArgs()); Context.ImmediateContext.Flush(); }
protected void OnDeviceEndInternal() { for (int nSlice = 0; nSlice < NumSlices; nSlice++) { for (int nMipmap = 0; nMipmap < MipmapLevels; nMipmap++) { m_arraySubresourcesSrv[nSlice, nMipmap].OnDeviceEnd(); } } if (m_srv != null) { m_srv.Dispose(); m_srv = null; } if (m_resource != null) { m_resource.Dispose(); m_resource = null; } }
public override void Dispose() { base.Dispose(); _lutTexture1?.Dispose(); _lutTexture3?.Dispose(); }
/// <summary> /// 深度テクスチャーを作成する。単体で使用する場合はdimensionとdescを入力し、 /// CreateTextureXX,SetSourcFileTexture,SetSourcMemoryTextureは、呼び出していないものとする。 /// 呼び出していた場合は、エラーが発生する /// </summary> /// <param name="device">デバイス</param> /// <param name="dimension">1D,2Dのみ(単体で作り場合のみ使用) 省略時、ResourceDimension.Unknown</param> /// <param name="desc">1D,2Dのみ(単体で作り場合のみ使用) 省略時、null</param> /// <param name="isCreateShaderResourceView">シェーダーリソースビューを作成するか? 省略時、true</param> /// <returns></returns> internal int CreateDepthTexture(ResourceDimension dimension = ResourceDimension.Unknown, Texture123DDesc desc = null, bool isCreateShaderResourceView = true) { if (m_resourceDepth != null) { Debug.Assert(false); throw new CreatedException(); } if (m_createdTxNum == 0 && (dimension != ResourceDimension.Unknown || desc == null)) { Debug.Assert(false); throw new ArgumentException(); } if (m_createdTxNum == 0 && m_type == ResourceDimension.Unknown) { m_type = dimension; } try { DepthStencilViewDescription descDSV = new DepthStencilViewDescription(); ShaderResourceViewDescription srvd = new ShaderResourceViewDescription(); switch (m_type) { case ResourceDimension.Texture1D: { Texture1DDescription descDepth = desc != null ? desc.D1 : m_descTx.D1; descDepth.BindFlags = BindFlags.DepthStencil | (isCreateShaderResourceView ? BindFlags.ShaderResource : 0); descDepth.Format = Format.R32_Typeless; m_depth.D1 = new Texture1D(App.DXDevice, descDepth); if (m_depth.D1 == null) { throw new CreateFailedException(); } m_depth.D1.DebugName = "Depth Texture1D" + m_name; m_descDepth.d1 = descDepth; m_resourceDepth = (SharpDX.Direct3D11.Resource)(m_depth.D1); descDSV.Dimension = DepthStencilViewDimension.Texture1D; srvd.Dimension = ShaderResourceViewDimension.Texture1D; srvd.Texture2D.MipLevels = descDepth.MipLevels; break; } case ResourceDimension.Texture2D: { Texture2DDescription descDepth = desc != null ? desc.D2 : m_descTx.D2; descDepth.BindFlags = BindFlags.DepthStencil | (isCreateShaderResourceView ? BindFlags.ShaderResource : 0); descDepth.Format = Format.R32_Typeless; m_depth.D2 = new Texture2D(App.DXDevice, descDepth); if (m_depth.D2 == null) { throw new CreateFailedException(); } m_depth.D2.DebugName = "Depth Texture2D" + m_name; m_descDepth.d2 = descDepth; m_resourceDepth = (SharpDX.Direct3D11.Resource)(m_depth.D2); descDSV.Dimension = DepthStencilViewDimension.Texture2D; srvd.Dimension = ShaderResourceViewDimension.Texture2D; srvd.Texture2D.MipLevels = descDepth.MipLevels; break; } default: throw new CreateFailedException(); } // 深度ステンシルビュー descDSV.Format = Format.D32_Float; descDSV.Flags = 0; descDSV.Texture2D.MipSlice = 0; m_depthStencilView = new DepthStencilView(App.DXDevice, m_resourceDepth, descDSV); if (m_depthStencilView == null) { throw new CreateFailedException(); } // リソースビュー if (isCreateShaderResourceView) { srvd.Format = Format.R32_Float; srvd.Texture2D.MostDetailedMip = 0; m_depthResourceView = new ShaderResourceView(App.DXDevice, m_resourceDepth, srvd); if (m_depthResourceView == null) { throw new CreateFailedException(); } } m_depthStencilView.DebugName = "DepthStencilView=>" + m_name; m_resourceDepth.DebugName = m_name; } catch { if (m_depthStencilView != null) { m_depthStencilView.Dispose(); } if (m_resourceDepth != null) { m_resourceDepth.Dispose(); } if (m_depth.D1 != null) { m_depth.D1.Dispose(); } if (m_depth.D2 != null) { m_depth.D2.Dispose(); } m_depthStencilView = null; m_resourceDepth = null; m_depth.D1 = null; m_depth.D2 = null; HasDepthStencil = false; return(-1); } HasDepthStencil = true; return(0); }
public void Dispose() { DisposeSharedViews(); Texture.Dispose(); }