DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 3D 좌표계와 지오메트리 래스터화 규칙 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
정점으로 지정된 점은 스크린 위에의 픽셀과 정확하게 일치하지 않는 것이 많다. 이 경우, Microsoft® Direct3D® 는 삼각형 래스터화 규칙을 적용해, 어느 픽셀이 주어진 삼각형에 적용시킬까를 결정한다.
Direct3D 에서는, 지오메트리를 전부 칠하는데, 좌상 필링 변환을 사용한다. 이 규칙은, Microsoft Windows® Graphics Device Interface (GDI) 및 OpenGL 의 직사각형에 사용하는 규칙과 같다. Direct3D 에서는, 픽셀의 중심이 중요한 포인트이다. 픽셀의 중심이 삼각형의 내부에 있는 경우, 그 픽셀은 그 삼각형의 일부이다. 픽셀의 중심은 정수 좌표에 있다.
여기서 설명하는, Direct3D 의 삼각형 래스터화 규칙이, 이용 가능한 모든 하드웨어에 들어맞는다고는 할 수 없다. 현재의 하드웨어를 조사해 보면, 이 규칙의 처리에 대해 약간의 차이가 발견되는 일도 있다.
다음 그림은 좌상의 모퉁이가 (0, 0)로 우하의 모퉁이가 (5, 5)의 직사각형을 나타내고 있다. 이 직사각형은, 예상되는 대로 25 픽셀을 차지하고 있다. 직사각형의 폭은, 오른쪽에서 왼쪽을 뺄셈 한 값으로 정의된다. 높이는, 아래에서 위를 뺄셈 한 값으로 정의된다.
좌상 필링 변환의,위와는 수평 스팬의 수직 위치를 나타내,왼쪽과는 있는 스팬내의 픽셀의 수평 위치를 나타낸다. 수평 이외의 옆은, 위에의옆은 아니다. 일반적으로, 대부분의 삼각형은 왼쪽의 옆과 오른쪽의 옆만을 갖는다.
좌상 필링 변환에 의해, 삼각형이 픽셀의 중심을 통과 할 때의 Direct3D 의 처리가 정해진다. 다음 그림은 정점이 (0, 0), (5, 0), (5, 5)의 삼각형과 정점이 (0, 5), (0, 0), (5, 5)의 삼각형을 나타내고 있다. 이 경우, 전자의 삼각형은 15 픽셀 (흑으로 표시)을 차지하지만, 후자의 삼각형은 10 픽셀 (회색으로 표시) 밖에 차지하지 않는다. 공유하고 있는 옆이 전자의 삼각형의 왼쪽의 옆이니까이다.
예를 들어, 좌상의 모퉁이가 (0.5, 0.5)로 우하의 모퉁이가 (2.5, 4.5)의 직사각형을 4 개의 삼각형 (T, B, L, R)으로 정의하는 경우, 이 직사각형의 중심점은 (1.5, 2.5)이 된다. Direct3D 래스터라이저로 이 직사각형을테세레이트하면, 각 픽셀의 중심은 분명하게 4 개의 삼각형의 각각의 내부에 존재해, 좌상 필링 변환은 불필요하게 된다. 다음의 그림에 이것을 나타낸다. 직사각형 내부에 있는 픽셀에는, Direct3D 가 그 픽셀에 넣는 삼각형에 대응한 라벨을 붙이고 있다.
위에의 예의 직사각형을 좌상의 모퉁이가 (1.0, 1.0), 우하의 모퉁이가 (3.0, 5.0), 중심점이 (2.0, 3.0)가 되도록(듯이) 이동 하면, Direct3D 는 좌상 필링 변환을 적용한다. 다음 그림이 나타내듯 이 직사각형 내부의 픽셀의 대부분은, 2 개 이상의 삼각형의 사이의 경계를 걸친다.
어느 쪽의 직사각형도, 같은 픽셀에 의해 표현된다.
포인트는 포인트 스프라이트와 같게 렌더링 된다. 즉, 스크린에 정렬한 사변형으로서 렌더링 되어 다각형 렌더링과 같은 규칙이 적용된다.
anti-aliasing 하고 있지 않는 라인의 렌더링 규칙은, GDI 의 렌더링 규칙과 완전히 같이이다.
anti-aliasing 한 라인의 렌더링의 더 자세한 정보는, 「ID3DXLine 」를 참조할것.
포인트 스프라이트 및 패치 기본도형를 래스터화하는 경우, 우선 그 기본도형를 삼각형에 테세레이트 해, 그 삼각형을 래스터화한 것처럼 된다. 더 자세한 정보는, 「포인트 스프라이트」를 참조할것.