OpenGL Shader – 10

GLSL을 위한 OpenGL 설정 – 청소
원문 : http://www.lighthouse3d.com/opengl/glsl/index.php?oglcleanup

이전 섹션에서는, 프로그램에 쉐이더를 붙이는 함수를 보였다. 이제 이렇게 붙인 쉐이더를 프로그램에서 때어내는 함수에 대해서 알아보자. (OpenGL 2.0 형태)

void glDetachShader(GLuint program, GLuint shader);
Parameter:
program – 쉐이더를 떼어낼 프로그램 핸들
shader – 떼어낼 쉐이더 핸들

이에 대한 ARB 확장 형태는 다음과 같다.

void glDetachObjectARB(GLhandleARB program, GLhandleARB shader);
Parameter:
program – 쉐이더를 떼어낼 프로그램 핸들
shader – 떼어낼 쉐이더 핸들

쉐이더 삭제는 프로그램에서 떼어내야만 가능하며, 쉐이더 삭제와 프로그램 삭제에 대한 OpenGL 2.0 함수는 다음과 같다.

void glDeleteShader(GLuint id);
void glDeleteProgram(GLuid id);
Parameter:
id – 삭제할 프로그램 또는 쉐이더의 핸들

쉐이더가 프로그램에 붙여져 있을 경우, 위의 함수를 사용해 삭제를 시도해도 실제로 삭제되지 않고 단지 지워졌다고 표시만된다.  쉐이더의 실제 삭제는 프로그램에서 해당 쉐이더가 떼어지면 진짜로 삭제가 된다. 참고로 쉐이더는 하나의 프로그램에만 붙을 수 있는게 아니고 여러개에 붙을 수 있으며, 쉐이더를 삭제하기 위해서는 붙은 모든 프로그램으로부터 떼어내야 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다