DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 텍스처 텍스처 좌표   [목차열람] [주소복사] [슬롯비우기]
텍스처 좌표
 
Microsoft DirectX 9.0

텍스처 좌표


대부분의 텍스처는, 비트 맵 같이, 색값의 2 차원 배열이다. 다만, 큐브 환경 맵 텍스처는 제외하다. 더 자세한 정보는, 「큐브 환경 맵」을 참조할것. 각각의 색값은, 텍스처 요소 또는텍셀이라고 부른다. 각 텍셀은, 텍스처내의 일의의 주소를 갖는다. 이 주소는, 각각 u 와 v 로 나타내지는 행과 열의 번호이다고 생각할 수가 있다.

텍스처 좌표는 텍스처 공간에 있다. 즉, 텍스처 좌표는, 텍스처내의 것 (0,0)을 기준으로 한 상대 위치에 존재한다. 텍스처를 3D 공간의 원시적으로 적용 할 때 그 텍셀 주소를 개체 좌표에 맵핑 해야 한다. 그 후, 이 주소를 화면 좌표, 즉 픽셀 위치에 평행이동 할 필요가 있다.

텍셀의 스크린 공간에의 맵핑

Microsoft® Direct3D® 는, 텍스처 공간의 텍셀을 스크린 공간의 픽셀에 직접 맵핑 한다. 이것에 의해, 중간의 순서가 생략 되어 효율이 높아진다. 이 맵핑 처리는, 실제는 역맵핑이다. 즉, 스크린 공간의 각 픽셀에 대해, 텍스처 공간의 대응하는 텍셀 위치 좌표를 계산한다. 이 포인트 또는 이 주위로 텍스처색이 샘플링 된다. 이 샘플링 처리는, 텍스처 필터링이라고 부른다. 더 자세한 정보는, 「텍스처 필터링」을 참조할것.

텍스처의 각 텍셀은, 텍셀 좌표로 지정할 수 있다. 그러나, 텍셀을 원시적으로 맵핑 하기 위해서는, Direct3D 는, 모든 텍스처의 모든 텍셀에 대해서 공통의 주소 범위를 필요로 한다. 따라서, 모든 텍셀 주소가 0.0 ~ 1.0 의 범위에 있는 포괄적 주소 지정 스킴이 사용된다. 2D 직교좌표가 x 와 y 의 좌표로 지정되는 것과 같이, Direct3D 애플리케이션에서는 u 와 v 의 값으로 텍스처 좌표를 지정한다. 실제로는, 0.0 ~ 1.0 의 범위외의 텍스처 좌표를 처리하는 일도 가능해, 텍스처어드레싱으로 설정하는 파라미터를 사용해 이 처리를 실시한다. 더 자세한 정보는, 「텍스처어드레싱모드」를 참조할것.

이 결과, 동일한 텍스처 주소를 다른 텍스처가 다른 텍셀에 맵핑 할 수 있다. 다음의 그림에서는, 텍스처 주소 (0.5, 1.0)를 사용하고 있다. 그러나, 이러한 텍스처는 사이즈가 다르기 (위해)때문에, 텍스처 주소는 다른 텍셀에 맵핑 된다. 좌측의 텍스처 1 은 5x5 이다. 텍스처 주소 (0.5, 1.0)는 텍셀 (2,4)에 맵핑 된다. 우측의 텍스처 2 는 7x7 이다. 텍스처 주소 (0.5, 1.0)는 텍셀 (3,6)에 맵핑 된다.

텍스처 어드레싱

다음 그림은 간단한 텍셀 맵핑 처리를 나타내고 있는 실제, 이것은 매우 단순한 예이다. 더 자세한 정보는, 「텍셀과 픽셀간의 직접 맵핑」을 참조할것.

색의 정방형으로서 이상화한 픽셀

이 예에서는, 그림의 좌측의 픽셀을 이상화한 「색의 정방형」으로 가리킨다. 이 픽셀의 4 개의 모퉁이의 주소가, 개체 공간의 3D 원시적으로 맵핑 된다. 픽셀의 형상은, 3D 공간의 기본도형의 형상과 표시 각도가 원인으로 비뚤어지는 것이 많다. 다음에, 픽셀의 모퉁이에 대응한다, 기본도형 위에의 표면 영역의 모퉁이를, 텍스처 공간에 맵핑 한다. 이 맵핑 처리에 의해 픽셀의 형상이 다시 비뚤어지지만, 이것이 일반적이다. 픽셀의 최종적인 색값은, 픽셀이 맵핑 되는 영역의 텍셀로부터 계산한다. 텍스처 필터링 메서드를 설정하는 것에 의해, Direct3D 가 픽셀색을 얻기 위해서(때문에) 사용하는 메서드를 결정한다. 더 자세한 정보는, 「텍스처 필터링」을 참조할것.

애플리케이션은, 텍스처 좌표를 직접 정점에 할당할 수가 있다. 이 기능에 의해, 원시적으로 맵핑 하는 텍스처의 부분을 결정할 수가 있다. 예를 들어, 다음의 그림의 텍스처와 완전히 같은 사이즈의 직사각형 기본도형를 생성 하는 경우를 생각한다. 이 예에서는, 애플리케이션으로 텍스처 전체를 벽전체에 맵핑 한다. 애플리케이션이 기본도형의 정점에 할당하는 텍스처 좌표는, (0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)이다.

텍스처 맵핑 한 벽

벽의 높이를 1/2 만 작게 하는 경우는, 작은 벽에 맞추어 텍스처를 비뚤어지게 하는지, Direct3D 가 텍스처의 하반신을 사용하도록(듯이) 텍스처 좌표를 할당할 수가 있다.

작은 벽에 맞추어 텍스처를 비뚤어지게 하거나 스케일링 하거나 하는 경우, 사용하는 텍스처 필터링 메서드에 의해 화질이 바뀐다. 더 자세한 정보는, 「텍스처 필터링」을 참조할것.

Direct3D 로 작은 벽에 대해서 텍스처의 하반신을 사용하도록(듯이) 텍스처 좌표를 할당하는 경우, 애플리케이션이 이 기본도형의 정점에 할당하는 텍스처 좌표는, (0.0, 0.5), (1.0, 0.5), (1.0, 1.0), (0.0, 1.0)가 된다. Direct3D 는 텍스처의 하반신을 벽에 적용한다.

정점의 텍스처 좌표가 1.0 을 넘고 있어도 상관없다. 0.0 ~ 1.0 의 범위외의 텍스처 좌표를 정점에 할당할 때는, 텍스처어드레싱모드도 설정해야 한다. 더 자세한 정보는, 「텍스처어드레싱모드」를 참조할것.

텍스처 좌표와 텍스처 스테이지

텍스처 좌표는, 텍스처 스테이지에 의해 텍스처에 관련지을 수 있다. 텍스처를 텍스처 스테이지에 관련지으려면 SetTexture(stageIndex, pTexture)를 사용한다. 「IDirect3DDevice9::SetTexture 」를 참조할것.

유연한 정점 포맷 (FVF) 코드에서는, 최대 8 세트의 텍스처 좌표를 정의할 수 있다. 텍스처 좌표의 데이터는, 사용자가 정점 데이터로 지정한다. 이 데이터는, 제로로부터 시작되는 인덱스 0 ~ 7 으로 참조된다. 최대 8 개의 텍스처 혼합 스테이지가 존재한다. 텍스처를 특정의 스테이지에 관련지으려면 , SetTexture( stageIndex, pTexture)를 사용한다.

텍스처를 스테이지에 관련지으면 임의의 텍스처 좌표를 그 스테이지에서 사용할 수 있게 된다. 각 좌표세트를 스테이지에 관련지으려면 , SetTextureStageState( stageIndex, D3DTSS_TEXCOORDINDEX, textureCoordinateIndex )를 사용한다. 「IDirect3DDevice9::SetTextureStageState 」를 참조할것. 이와 같이, 혼합 스테이지에서 임의의 텍스처나 텍스처 좌표를 사용하도록(듯이) 설정할 수 있다. 복수의 스테이지에서 같은 텍스처나 텍스처 좌표를 사용할 수도 있다.

더 자세한 정보는, 다음 주제를 참조할것.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP