Example #1
0
        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));
            }
        }
Example #2
0
        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));
        }