示例#1
0
        public static int CreateShaderObject(Shader.ShaderType type)
        {
            switch (type)
            {
            case Shader.ShaderType.VertexShader:
                return(GL.CreateShader(ShaderType.VertexShader));

            case Shader.ShaderType.FragmentShader:
                return(GL.CreateShader(ShaderType.FragmentShader));

            case Shader.ShaderType.GeometryShader:
                return(GL.CreateShader(ShaderType.GeometryShader));

            default:
                return(0);
            }
        }
示例#2
0
 private void InitShader(string name, Shader existing, Shader.ShaderType shaderType)
 {
     if (existing != null)
     {
         m_shader = existing;
         m_shader.Recreate();
     }
     else
     {
         m_shader = new Shader(m_client, shaderType)
         {
             UseMis = true,
             UseTransparentShadow = true,
             HeterogeneousVolume  = false,
             Name = name
         };
     }
 }
示例#3
0
        public Shader(Shader.ShaderType type, string name, string code)
        {
            code   = code.Replace("<instances>", GraphicsSettings.MaxBatchInstances.ToString());
            Name   = name;
            Source = code;
            ID     = GL.CreateShader((OpenTK.Graphics.OpenGL.ShaderType)type);
            GLDebug.CheckErrors();

            GL.ShaderSource(ID, code);
            GL.CompileShader(ID);
#if DEBUG
            var log = GL.GetShaderInfoLog(ID);
            if (log != null && log != "")
            {
                throw new ShaderCompileException(this, log);
            }
#endif
            GLDebug.CheckErrors();
        }