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); } }
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 }; } }
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(); }