Can we delete vertex and fragment shaders after link shader program

久未见 提交于 2019-12-24 17:46:08

问题


As title said, Can I do this in my program:

vertex = glCreateShader(GL_VERTEX_SHADER);
/* ... */
fragment = glCreateShader(GL_FRAGMENT_SHADER);
/* ... */
program = glCreateProgram();
glAttachShader(program, vertex);
glAttachShader(program, fragment);
glLinkProgram(program);
/* All things done */

glDeleteShader(vertex); /* <~ Can I do this now? */
glDeleteShader(vertex); /* <~ Can I do this now? */

/* And in render procedure */
glUseProgram(program); /* <~ Still use program without any problem? */
/* ... */

回答1:


Yes, this perfectly valid. Shader objects are still internally referenced by the program object and will be implicitly freed when the program object is deleted.



来源:https://stackoverflow.com/questions/14796063/can-we-delete-vertex-and-fragment-shaders-after-link-shader-program

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!