public void SetRenderState(RMaterial?previousMaterial = null) { // Only set the render state if it changed from the previous material to improve performance. if (previousMaterial == null || SourceColor != previousMaterial.SourceColor || DestinationColor != previousMaterial.DestinationColor) { var alphaBlendSettings = new SFGenericModel.RenderState.AlphaBlendSettings(true, SourceColor, DestinationColor, BlendEquationMode.FuncAdd, BlendEquationMode.FuncAdd); SFGenericModel.RenderState.GLRenderSettings.SetAlphaBlending(alphaBlendSettings); } // Meshes with screen door transparency enable this OpenGL extension. if (previousMaterial == null || EnableAlphaSampleCoverage != previousMaterial.EnableAlphaSampleCoverage) { if (RenderSettings.Instance.EnableExperimental && EnableAlphaSampleCoverage) { GL.Enable(EnableCap.SampleAlphaToCoverage); } else { GL.Disable(EnableCap.SampleAlphaToCoverage); } } if (previousMaterial == null || EnableFaceCulling != previousMaterial.EnableFaceCulling || CullMode != previousMaterial.CullMode) { SFGenericModel.RenderState.GLRenderSettings.SetFaceCulling(new SFGenericModel.RenderState.FaceCullingSettings(EnableFaceCulling, CullMode)); } if (previousMaterial == null || FillMode != previousMaterial.FillMode) { SFGenericModel.RenderState.GLRenderSettings.SetPolygonModeSettings(new SFGenericModel.RenderState.PolygonModeSettings(MaterialFace.FrontAndBack, FillMode)); } }
public void SetRenderState() { var alphaBlendSettings = new SFGenericModel.RenderState.AlphaBlendSettings(true, BlendSrc, BlendDst, BlendEquationMode.FuncAdd, BlendEquationMode.FuncAdd); SFGenericModel.RenderState.GLRenderSettings.SetAlphaBlending(alphaBlendSettings); // Meshes with screen door transparency enable this OpenGL extension. if (RenderSettings.Instance.EnableExperimental && UseAlphaSampleCoverage) { GL.Enable(EnableCap.SampleAlphaToCoverage); } else { GL.Disable(EnableCap.SampleAlphaToCoverage); } SFGenericModel.RenderState.GLRenderSettings.SetFaceCulling(new SFGenericModel.RenderState.FaceCullingSettings(true, CullMode)); }