다음을 통해 공유


glStencilOp 함수

glStencilOp 함수는 스텐실 테스트 작업을 설정합니다.

구문

void WINAPI glStencilOp(
   GLenum fail,
   GLenum zfail,
   GLenum zpass
);

매개 변수

실패

스텐실 테스트가 실패할 때 수행할 작업입니다. 다음 6개의 기호 상수가 허용됩니다.

의미
GL_KEEP
현재 값을 유지합니다.
GL_ZERO
스텐실 버퍼 값을 0으로 설정합니다.
GL_REPLACE
glStencilFunc에서 지정한 대로 스텐실 버퍼 값을 ref로 설정합니다.
GL_INCR
현재 스텐실 버퍼 값을 증분합니다. 표시 가능한 최대 부호 없는 값으로 고정합니다.
GL_DECR
현재 스텐실 버퍼 값을 감소합니다. 0으로 고정합니다.
GL_INVERT
비트는 현재 스텐실 버퍼 값을 반전합니다.

zfail

스텐실 테스트가 통과하지만 깊이 테스트가 실패할 때 스텐실 작업이 수행됩니다. 동일한 기호 상수를 fail로 허용합니다 .

zpass

스텐실 테스트와 깊이 테스트가 모두 통과하거나 스텐실 테스트가 통과하고 깊이 버퍼가 없거나 깊이 테스트가 활성화되지 않은 경우 스텐실 동작입니다. 동일한 기호 상수를 fail로 허용합니다.

반환 값

이 함수는 값을 반환하지 않습니다.

오류 코드

glGetError 함수에서 다음 오류 코드를 검색할 수 있습니다.

Name 의미
GL_INVALID_ENUM
fail, zfail 또는 zpass 는 정의된 6개의 상수 값 이외의 값이었습니다.
GL_INVALID_OPERATION
함수는 glBegin 호출과 glEnd에 대한 해당 호출 간에 호출되었습니다.

설명

z 버퍼링과 같은 스텐실링은 픽셀 단위로 그리기를 사용하거나 사용하지 않도록 설정합니다. OpenGL 그리기 기본 형식을 사용하여 스텐실 평면에 그린 다음, 스텐실 평면을 사용하여 기하 도형 및 이미지를 렌더링하여 화면의 일부를 마스킹합니다. 스텐실링은 일반적으로 멀티패스 렌더링 알고리즘에서 데칼, 개요 및 건설적인 고체 기하 도형 렌더링과 같은 특수 효과를 달성하는 데 사용됩니다.

스텐실 테스트는 조건부로 스텐실 버퍼의 값과 참조 값 간의 비교 결과에 따라 픽셀을 제거합니다. 테스트는 인수 GL_STENCIL_TEST glEnableglDisable 호출로 사용하도록 설정되고 glStencilFunc로 제어됩니다.

glStencilOp 함수는 스텐실링을 사용하는 동안 저장된 스텐실 값이 어떻게 되는지 나타내는 세 가지 인수를 사용합니다. 스텐실 테스트가 실패하면 픽셀의 색 또는 깊이 버퍼가 변경되지 않으며 실패 는 스텐실 버퍼 내용에 어떤 일이 발생하는지 지정합니다.

스텐실 버퍼 값은 부호 없는 정수로 처리됩니다. 증분 및 감소하면 값이 0 및 2n 1로 고정됩니다. 여기서 n 은 GL_STENCIL_BITS 쿼리하여 반환되는 값입니다.

glStencilOp에 대한 다른 두 인수는 후속 깊이 버퍼 테스트가 성공(zpass) 또는 실패(zfail)일 경우 스텐실 버퍼 작업을 지정합니다. ( glDepthFunc를 참조하세요.) 실패와 동일한 6개의 기호 상수를 사용하여 지정됩니다. 깊이 버퍼가 없거나 깊이 버퍼가 활성화되지 않은 경우 zfail 은 무시됩니다. 이러한 경우 실패zpass 는 스텐실 테스트가 실패하고 통과하면 각각 스텐실 작업을 지정합니다.

처음에는 스텐실 테스트를 사용할 수 없습니다. 스텐실 버퍼가 없는 경우 스텐실 수정이 발생하지 않으며 glStencilOp에 대한 호출에 관계없이 스텐실 테스트가 항상 통과하는 것처럼 표시됩니다.

다음 함수는 glStencilOp과 관련된 정보를 검색합니다.

인수가 GL_STENCIL_FAIL glGet

인수가 GL_STENCIL_PASS_DEPTH_PASS glGet

인수가 GL_STENCIL_PASS_DEPTH_FAIL glGet

인수가 GL_STENCIL_BITS glGet

인수 GL_STENCIL_TEST glIsEnabled

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Gl.h
라이브러리
Opengl32.lib
DLL
Opengl32.dll

추가 정보

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilFunc