Después de tener un programa vinculado, y pensando en la programación defensiva, ¿debo eliminar y separar los sombreadores utilizados para vincular este programa?
En caso afirmativo, ¿eso va a liberar recursos? ¿O estos objetos de sombreado solo se liberarán después de una llamada a glDeleteProgram?
editar: Solo para aclarar lo que estoy haciendo es (que es consistente con la respuesta):
glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> dibujar usando este programa de sombreador -> y cuando ya no necesito este sombreador glDeleteProgram
El orden es correcto, pero en realidad no es necesario desacoplar los sombreadores, porque llamar a glDeleteProgram lo hace por usted con todos los sombreadores adjuntos y luego se eliminan automáticamente (si se marcaron para su eliminación con la función glDeleteShader).
Referencia: http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml .
fuente