콜백 지정
테셀레이션에 대해 최대 5개의 콜백 함수를 지정할 수 있습니다. 지정하지 않은 함수는 테셀레이션 중에 호출되지 않으며 반환되었을 수 있는 정보를 얻지 못합니다. gluTessCallback을 사용하여 콜백 함수를 지정합니다.
gluTessCallback 함수는 콜백 함수 fn을 테셀레이션 개체 tessobj와 연결합니다. 콜백의 형식은 GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END 또는 GLU_ERROR 수 있는 매개 변수 형식에 따라 결정됩니다. 가능한 5개의 콜백 함수에는 다음과 같은 프로토타입이 있습니다.
콜백 함수 | 프로토타입 |
---|---|
GLU_BEGIN | voidbegin(GLenum형식 ); |
GLU_EDGE_FLAG | voidedgeFlag(GLbooleanflag ); |
GLU_VERTEX | voidvertex(**void ***data ); |
GLU_END | voidend( void ); |
GLU_ERROR | voiderror(GLenumerrno ); |
콜백 함수를 변경하려면 새 함수를 사용하여 gluTessCallback을 호출합니다. 콜백 함수를 새 함수로 대체하지 않고 제거하려면 적절한 함수에 대한 null 포인터를 gluTessCallback에 전달합니다.
테셀레이션이 진행됨에 따라 콜백 함수는 OpenGL 함수 glBegin, glEdgeFlag, glVertex 및 glEnd를 사용하는 방법과 유사한 방식으로 호출됩니다.
GLU_BEGIN 콜백 함수는 세 가지 가능한 매개 변수 중 하나를 사용하여 호출됩니다.
- GL_TRIANGLE_FAN
- GL_TRIANGLE_STRIP
- GL_TRIANGLES
GLU_BEGIN 콜백 함수를 호출한 후 GLU_END 연결된 콜백 함수를 호출하기 전에 GLU_EDGE_FLAG 콜백과 GLU_VERTEX 콜백의 일부 조합이 호출됩니다. 연결된 꼭짓점 및 에지 플래그는 glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP) 또는 glBegin(GL_TRIANGLES**)**과 일치하는 glEnd 간에 OpenGL에 있는 것처럼 정확하게 해석됩니다.
가장자리 플래그는 삼각형 팬 또는 삼각형 스트립에서 의미가 없으므로 GLU_EDGE_FLAG 연결된 콜백 함수가 있는 경우 GLU_BEGIN콜백은 GL_TRIANGLES 경우에만 호출됩니다. GLU_EDGE_FLAG 콜백 함수는 OpenGL glEdgeFlag 함수와 유사하게 작동합니다.
테셀레이션 중에 오류가 발생하면 오류 콜백 함수가 호출됩니다. 오류 콜백 함수에 GLU 오류 번호가 전달됩니다. gluErrorString 함수를 사용하여 오류를 설명하는 문자열을 가져올 수 있습니다 .