После того, как у меня есть связанная программа, и я думаю о защитном программировании, я должен удалить и отсоединить шейдеры, используемые для связи этой программы?
Если да, это собирается освободить какие-либо ресурсы? Или эти шейдерные объекты будут освобождены только после вызова glDeleteProgram?
редактировать: просто для пояснения, что я делаю (что согласуется с ответом):
glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> рисовать с помощью этой программы шейдера -> и когда мне больше не нужен этот шейдер glDeleteProgram
Порядок правильный, но вам не нужно отсоединять шейдеры, потому что вызов glDeleteProgram делает это для вас со всеми подключенными шейдерами, а затем они автоматически удаляются (если они были помечены для удаления с помощью функции glDeleteShader).
Ссылка: http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml .
источник