protected virtual void Dispose(bool disposing) { if (!disposedValue) { gl.DeleteProgram(ProgramId); ProgramId = 0; vertex_shader.Dispose(); fragment_shader.Dispose(); disposedValue = true; } }