コンパイル済みのシェーダーまたはプログラム (正しい用語がわからない) があり、それを削除する必要があります。
コンパイルされたプログラムやシェーダーの ID を見つけるにはどうすればよいですか?
デバッガーがそれを再定義しようとしていることを教えてくれるので、それが存在することを知っています。このため、再度コンパイルすることはできません:
ERROR: 0:1: error(#198) Redefinition at_coord_Y
ERROR: 1:1: error(#248) Function already has a body main
シェーダー ソースの最初の行は次のとおりです。
"in float at_coord_Y;"
どういうわけかこれを使用してIDを見つけることはできますか?
編集 1: 少し明確にすることを願っていますが、シェーダーは既に存在するため、コンパイルに失敗します。
GLint compiled = UNDEFINED_VALUE;
const GLchar* shaderSrc[] = {
"in float at_coord_Y;",
"void main()",
"{",
// Dont mind the empty space
"}"
};
GLuint shaderId = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shaderId, glNumberOfLines(shaderSrc), shaderSrc, NULL);
glCompileShader(shaderId); // Fail to compile because it already exists. Redefinition error.
glGetShaderiv(shaderId), GL_COMPILE_STATUS, &compiled); // Compile status GL_FALSE
しかし、どうすれば既存のシェーダー (またはプログラム) の Id を見つけることができますか?