쉐이더 프로그램을 종료하기 위해서는 NULL 또는 0으로 값을 넣어서 종료시켜줘야 합니다.
glUseProgram(NULL); 또는 glUseProgram(0);
아래 여러 예를 들어볼께요.
예제1 ) 단순 프로그램 종료 예시 입니다.
만약 glUseProgramObjectARB을 사용했다면 똑같이 glUseProgramObjectARB로 사용하면 됩니다.
programID = LoadShaders("VertexShader.txt", "FragmentShader.txt");
glUseProgram(programID);
...
...
...
glUseProgram(NULL);
예제2) 여러 버퍼를 바인딩한 경우의 예시
프로그램 사용과 VAO 바인딩, 각종 버퍼를 바인딩 한 경우에는 전부 해제해줘야 한다.
programID = LoadShaders("VertexShader.txt", "FragmentShader.txt");
glUseProgram(programID);
glGenVertexArrays(1, &VAO[0]); // 1.할당 (앞에 인자는 1개 의미)
glBindVertexArray(VAO[0]);
glGenBuffers(1, &VBO[0]); // 1.할당 (앞에 인자는 1개 의미)
glBindBuffer(GL_ARRAY_BUFFER, VBO[0]);
glGenBuffers(1, &EBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
...
...
...
glUseProgram(NULL);
glBindVertexArray(NULL);
glBindBuffer(GL_ARRAY_BUFFER, NULL);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, NULL);