2012-11-17 7 views
8

glPolygonOffset 함수의 첫 번째 매개 변수의 의미를 이해하는 데 어려움이 있습니다. glPolygonOffset에서 factor 매개 변수의 의미와 용도

void glPolygonOffset(GLfloat factor, GLfloat units); 

The official documentation

는 요인

각 폴리곤 오프셋 변수 깊이를 만드는 데 사용되는 축척 비율을 지정 말한다.

하고는 해당 정점의 깊이 값으로부터 보간 후의 각 단편의 깊이 값이 상쇄되도록

. 오프셋 값은 factor × DZ + rx 단위입니다. 여기서 DZ는 다각형의 화면 영역을 기준으로 한 깊이 변화의 측정치이고, r은 주어진 각도에 대해 분해 가능한 오프셋을 생성하는 데 보장되는 가장 작은 값입니다 이행.

나는 runit이 무엇인지 알고 있습니다. 내가 이해할 수없는 것은 DZ이 무엇인지, 즉 "다각형의 화면 영역에 대한 깊이 값의 변화 측정"이 의미하는 바이며, 요인을 0 이외의 다른 값으로 설정해야하는 이유는 무엇입니까?

내 와이어 프레임을 원하는만큼 간격을 띄우고 싶으면 깊이 값에서 단위를/substact로 추가/substact하는 것이 좋습니다. factor 매개 변수 (및 문서에 언급 된 DZ)의 의미, 목적 및 사용 예는 무엇입니까?

답변

8

나는 여기에 약간의 무지를 인정해야하지만, 나는 그것을 설명하는 this article을 발견했다. 그들은 말 :

는 시각적 결함없이 강조 고체 물체의 좋은 렌더링을 달성하기 위해, 당신은 단단한 물체 (당신을 멀리 밀어) 또는 와이어 프레임 오프셋 음의 오프셋 양을 추가 할 수 있습니다 (끌어 당신쪽으로). 가장 큰 문제는 "얼마나 많은 오프셋이 충분합니까?" 불행하게도 필요한 오프셋은 각 다각형의 깊이 기울기와 와이어 프레임의 선 너비 등 다양한 요인에 따라 달라집니다.

그들은 그 깊이 경사면이 방법을 설명한다 : 다각형을 통과로

깊이의 기울기는, X 또는 Y 좌표 중 어느 하나의 변화에 ​​의해 분할 Z (깊이)의 값의 변화이다. 깊이 값은 [0, 1] 범위로 고정 된 창 좌표에 있습니다. 다각형의 최대 깊이 기울기 (오프셋 방정식에서 m)를 계산하려면 다음 공식을 사용하십시오. m = max {| delV/delS |, | delV/delT |}. 근거리 및 원거리 클리핑 평면에 평행 폴리곤

는, 깊이의 기울기가 제로 (델는 편미분 임)

그래서 그들은 결론. [...] 클리핑면과 큰 각을 이루는 다각형의 경우, 깊이 기울기가 0보다 훨씬 클 수 있으며 더 큰 오프셋이 필요할 수 있습니다. 0.75 또는 1.0과 같은 작은 0이 아닌 계수 값은 아마도 고유 한 깊이 값을 생성하고 불쾌한 시각적 인공물을 제거하기에 충분합니다.