这样做的正确方法是什么?
我正在执行以下步骤:
- 创建着色器
- 编译着色器
- 创建程序
- 将着色器附加到程序
- 链接程序
- 删除着色器
在http://www.opengl.org/wiki/GLSL_Object它说:即使在链接程序之后,您也不必显式分离着色器对象。但是,最好在链接完成后执行此操作,否则当您尝试删除程序对象时,程序对象将使其附加的着色器对象保持活动状态。
还有从正确的方式删除 GLSL 着色器?说如果我不删除着色器会增加内存。
所以检查http://www.opengl.org/sdk/docs/man/xhtml/glDetachShader.xml,它说如果着色器已经通过调用 glDeleteShader 被标记为删除并且它没有附加到任何其他程序对象, 分离后将被删除。
所以我的#6 是没用的,除非我把它拆下来,对吧?
我应该在正确编译程序后分离和删除(以节省内存)还是应该仅在我的应用程序关闭时分离/删除?