Après avoir créé un programme lié et réfléchi à la programmation défensive, devrais-je supprimer et détacher les shaders utilisés pour lier ce programme?
Si oui, est-ce que cela va libérer des ressources? Ou bien ces objets shader ne seront-ils libérés qu'après un appel à glDeleteProgram?
edit: Juste pour clarifier ce que je suis en train de faire (ce qui est cohérent avec la réponse):
glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> dessine avec ce programme de shader -> et quand je n'ai plus besoin de ce shader glDeleteProgram
L'ordre est correct, mais vous n'avez pas vraiment besoin d'attacher les shaders, car appeler glDeleteProgram le fait pour vous avec tous les shaders attachés, puis ils sont automatiquement supprimés (s'ils ont été marqués pour suppression avec glDeleteShader func).
Référence: http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml .
la source