/// <summary> /// Deletes the shader and removes it from the ShaderIds-Dictionary. /// </summary> /// <param name="gl"></param> /// <param name="type"></param> public void DeleteShader(OpenGL gl, ShaderTypes type) { var shader = ShaderIds[type]; gl.DeleteShader(shader); ShaderIds.Remove(type); }
/// <summary> /// Creates a shader. /// </summary> /// <param name="gl"></param> /// <param name="type"></param> /// <param name="shaderCode"></param> private void CreateShader(OpenGL gl, ShaderTypes type, string shaderCode) { var id = gl.CreateShader((uint)type); gl.ShaderSource(id, shaderCode); gl.CompileShader(id); ShaderIds.Add(type, id); }
/// <summary> /// Deletes the shaders and the program and sets the ShaderProgramId to 0. /// </summary> /// <param name="gl"></param> /// <param name="deleteShaders"></param> public void DeleteProgram(OpenGL gl, bool deleteShaders) { while (ShaderIds.Count > 0) { DeleteShader(gl, ShaderIds.First().Key); } gl.DeleteProgram(ShaderProgramId); ShaderProgramId = 0; }