Depois de ter um programa vinculado e pensando em programação defensiva, devo excluir e desanexar os shaders usados para vincular esse programa?
Se sim, isso vai liberar algum recurso? Ou esses objetos de sombreador só serão liberados após uma chamada glDeleteProgram?
edit: Apenas para esclarecer o que estou fazendo é (o que é consistente com a resposta):
glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> desenhe usando este programa de sombreador -> e quando eu não precisar mais desse sombreador glDeleteProgram
A ordem está correta, mas você realmente não precisa anexar os sombreadores, porque chamar glDeleteProgram faz isso para você com todos os sombreadores conectados e eles são excluídos automaticamente (se eles foram sinalizados para exclusão com a função glDeleteShader).
Referência: http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml .
fonte