Setelah saya memiliki program tertaut, dan berpikir tentang pemrograman defensif, haruskah saya menghapus dan melepaskan shader yang digunakan untuk menautkan program ini?
Jika ya, apakah itu akan membebaskan sumber daya apa pun? Atau apakah objek shader ini hanya akan dibebaskan setelah panggilan glDeleteProgram?
sunting: Hanya untuk klarifikasi apa yang saya lakukan (yang konsisten dengan jawabannya):
glCreateShader -> glShaderSource -> glCompileShader -> glCreateProgram -> glAttachShader -> glLinkProgram -> glDetachShader -> glDeleteShader -> menggambar menggunakan program shader ini -> dan ketika saya tidak membutuhkan shader ini lagi glDeleteProgram
Urutannya benar, tetapi Anda tidak benar-benar perlu melakukan deattach shader, karena memanggil glDeleteProgram melakukan itu untuk Anda dengan semua shaders yang terpasang dan kemudian mereka secara otomatis dihapus (jika mereka ditandai untuk dihapus dengan fungsi glDeleteShader).
Referensi: http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml .
sumber