链接着色器程序之后,我们可以删除顶点着色器和片段着色器吗? [英] Can we delete vertex and fragment shaders after link shader program

查看:107
本文介绍了链接着色器程序之后,我们可以删除顶点着色器和片段着色器吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如标题所述,我可以在程序中执行此操作吗?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆