/// <summary>
        /// Compiles the actual code, we attach shaders
        /// </summary>
        public IShader End(FixedShaderParameters parameters)
        {
            Driver.IShaderBase b = compiler.End();

            // We now terminate it.
            switch (stage)
            {
            case BindingStage.VertexShader:
                return(new VShader(parameters, (Driver.IVShader)b));

            case BindingStage.PixelShader:
                return(new PShader(parameters, (Driver.IPShader)b));

            case BindingStage.GeometryShader:
            default:
                throw new NotImplementedException();
            }
        }