1

タイトルが言ったように、私のプログラムでこれを行うことはできますか:

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? */
/* ... */
4

1 に答える 1

1

はい、これは完全に有効です。シェーダーオブジェクトは引き続きプログラムオブジェクトによって内部的に参照され、プログラムオブジェクトが削除されると暗黙的に解放されます。

于 2013-02-10T10:18:54.923 に答える