示例#1
0
        private void Bind(OglShaderStage stage)
        {
            if (stage.Type == GalShaderType.Geometry)
            {
                //Enhanced layouts are required for Geometry shaders
                //skip this stage if current driver has no ARB_enhanced_layouts
                if (!OglExtension.EnhancedLayouts)
                {
                    return;
                }
            }

            switch (stage.Type)
            {
            case GalShaderType.Vertex:         Current.Vertex = stage; break;

            case GalShaderType.TessControl:    Current.TessControl = stage; break;

            case GalShaderType.TessEvaluation: Current.TessEvaluation = stage; break;

            case GalShaderType.Geometry:       Current.Geometry = stage; break;

            case GalShaderType.Fragment:       Current.Fragment = stage; break;
            }
        }
示例#2
0
        private void AttachIfNotNull(int programHandle, OglShaderStage stage)
        {
            if (stage != null)
            {
                stage.Compile();

                GL.AttachShader(programHandle, stage.Handle);
            }
        }
示例#3
0
        private void Bind(OglShaderStage stage)
        {
            switch (stage.Type)
            {
            case GalShaderType.Vertex:         Current.Vertex = stage; break;

            case GalShaderType.TessControl:    Current.TessControl = stage; break;

            case GalShaderType.TessEvaluation: Current.TessEvaluation = stage; break;

            case GalShaderType.Geometry:       Current.Geometry = stage; break;

            case GalShaderType.Fragment:       Current.Fragment = stage; break;
            }
        }