链接着色器程序之后,我们可以删除顶点着色器和片段着色器吗? [英] Can we delete vertex and fragment shaders after link shader program
本文介绍了链接着色器程序之后,我们可以删除顶点着色器和片段着色器吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
正如标题所述,我可以在程序中执行此操作吗?
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? */
/* ... */
推荐答案
是的,这完全有效.着色器对象仍由程序对象内部引用,并且在删除程序对象时将隐式释放它们.
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.
这篇关于链接着色器程序之后,我们可以删除顶点着色器和片段着色器吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文