private void DisposeShaders() { Ab3d.DirectX.DisposeHelper.DisposeAndNullify(ref _vertexShaderSharedResource); // This is the same as: if (_vertexShaderSharedResource != null) { _vertexShaderSharedResource.Dispose(); _vertexShaderSharedResource = null; } Ab3d.DirectX.DisposeHelper.DisposeAndNullify(ref _inputLayoutSharedResource); Ab3d.DirectX.DisposeHelper.DisposeAndNullify(ref _pixelShaderSharedResource); }
private void EnsureShaders(DXDevice dxDevice, bool usePerPointColor) { if (usePerPointColor) { if (_vertexShaderPerPointColorSharedResource == null) { // InputLayoutType.Color3 will be supported in the next version of DXEngine. Then it will be possible to use: var vertexLayoutDesc = InputElementFactory.GetInputElementsArray(InputLayoutType.Position | InputLayoutType.Normal | InputLayoutType.Color3); _vertexShaderPerPointColorSharedResource = dxDevice.EffectsManager.GetVertexShader("ShadedPointCloudPerPointColor.vs", vertexLayoutDesc, out _inputLayoutPerPointColorSharedResource, throwExceptionIfNotFound: true); } } else { if (_vertexShaderSharedResource == null) { var vertexLayoutDesc = InputElementFactory.GetInputElementsArray(InputLayoutType.Position | InputLayoutType.Normal); _vertexShaderSharedResource = dxDevice.EffectsManager.GetVertexShader("ShadedPointCloud.vs", vertexLayoutDesc, out _inputLayoutSharedResource, throwExceptionIfNotFound: true); } } if (_geometryShaderSharedResource == null) { _geometryShaderSharedResource = dxDevice.EffectsManager.GetGeometryShader("ShadedPointCloud.gs", throwExceptionIfNotFound: true); } if (_pixelShaderSharedResource == null) { _pixelShaderSharedResource = dxDevice.EffectsManager.GetPixelShader("ShadedPointCloud.ps", throwExceptionIfNotFound: true); } }