텍스처 좌표(Direct3D 9)

비트맵과 같은 대부분의 텍스처는 색 값의 2차원 배열입니다. 입방 환경 맵 텍스처는 예외입니다. 자세한 내용은 입방 환경 매핑(Direct3D 9)을 참조하세요. 개별 색 값을 텍스처 요소 또는 텍셀이라고 합니다. 각 텍셀에는 텍스처에 고유한 주소가 있습니다. 주소는 다음 그림에서 각각 사용자와 v라는 레이블이 지정된 열 및 행 번호로 간주할 수 있습니다.

열 및 행 번호로 텍셀 주소 그림

텍스처 좌표는 텍스처 공간에 있습니다. 즉, 텍스처의 위치(0,0)를 기준으로 합니다. 텍스처가 3D 공간의 기본 형식에 적용되면 해당 텍셀 주소를 개체 좌표로 매핑해야 합니다. 그런 다음 화면 좌표 또는 픽셀 위치로 변환해야 합니다.

텍셀을 화면 공간에 매핑

Direct3D는 텍스처 공간의 텍셀을 화면 공간의 픽셀에 직접 매핑하여 중간 단계를 건너뛰어 효율성을 높입니다. 이 매핑 프로세스는 실제로 역 매핑입니다. 즉, 화면 공간의 각 픽셀에 대해 텍스처 공간의 해당 텍셀 위치가 계산됩니다. 해당 지점 또는 그 주변의 텍스처 색이 샘플링됩니다. 샘플링 프로세스를 텍스처 필터링이라고 합니다. 자세한 내용은 텍스처 필터링(Direct3D 9)을 참조하세요.

텍스처의 각 텍셀은 텍셀 좌표로 지정할 수 있습니다. 그러나 텍셀을 기본 형식에 매핑하려면 Direct3D에 모든 텍스처의 모든 텍셀에 대해 균일한 주소 범위가 필요합니다. 따라서 모든 텍셀 주소가 0.0에서 1.0 사이의 범위에 있는 일반 주소 지정 체계를 사용합니다. Direct3D 애플리케이션은 x,y 좌표 측면에서 2D 카티전 좌표가 지정된 것과 마찬가지로 텍스처 좌표(v 값)를 지정합니다. 기술적으로 시스템은 실제로 0.0 및 1.0 범위를 벗어나는 텍스처 좌표를 처리할 수 있으며, 텍스처 주소 지정에 설정한 매개 변수를 사용하여 텍스처 좌표를 처리할 수 있습니다. 자세한 내용은 텍스처 주소 지정 모드(Direct3D 9)를 참조하세요.

그 결과 동일한 텍스처 주소가 서로 다른 텍스처의 다른 텍셀 좌표에 매핑될 수 있습니다. 다음 그림에서 텍스처 주소는 (0.5,1.0)입니다. 그러나 텍스처 크기가 다르기 때문에 텍스처 주소는 다른 텍셀에 매핑됩니다. 왼쪽의 텍스처 1은 5x5입니다. 텍스처 주소(0.5,1.0)는 텍셀(2,4)에 매핑됩니다. 오른쪽의 텍스처 2는 7x7입니다. 텍스처 주소(0.5,1.0)는 텍셀(3,6)에 매핑됩니다.

다른 텍스처의 다른 텍셀에 동일한 텍스처 주소 매핑 그림

텍셀 매핑 프로세스의 간소화된 버전은 다음 그림에 나와 있습니다. 이 예제는 매우 간단합니다. 자세한 내용은 텍셀을 픽셀에 직접 매핑(Direct3D 9)을 참조하세요.

개체 공간에 매핑된 픽셀(색 정사각형)의 그림

이 예제에서는 그림 왼쪽에 표시된 픽셀이 색 사각형으로 이상화됩니다. 픽셀의 네 모서리에 있는 주소는 개체 공간의 3D 기본 형식에 매핑됩니다. 픽셀의 모양은 3D 공간의 기본형 모양과 시야각 때문에 왜곡되는 경우가 많습니다. 픽셀의 모서리에 해당하는 기본 형식의 표면 영역 모서리가 텍스처 공간에 매핑됩니다. 매핑 프로세스는 픽셀의 모양을 다시 왜곡하며 이는 일반적입니다. 픽셀의 최종 색 값은 픽셀이 매핑되는 영역의 텍셀에서 계산됩니다. 텍스처 필터링 메서드를 설정할 때 Direct3D에서 픽셀 색에 도달하는 데 사용하는 메서드를 결정합니다. 자세한 내용은 텍스처 필터링(Direct3D 9)을 참조하세요.

애플리케이션은 꼭짓점에 직접 텍스처 좌표를 할당할 수 있습니다. 이 기능을 사용하면 텍스처의 어느 부분이 기본 형식으로 매핑되는지 제어할 수 있습니다. instance 경우 다음 그림에서 텍스처와 정확히 동일한 크기의 사각형 기본 형식을 만든다고 가정합니다. 이 예제에서는 애플리케이션이 전체 텍스처를 전체 벽에 매핑하려고 합니다. 애플리케이션이 기본 형식의 꼭짓점(0.0,0.0), (1.0,0.0), (1.0,1.0) 및 (0.0,1.0)에 할당하는 텍스처 좌표입니다.

텍스처 매핑된 벽 그림

벽 높이를 절반으로 줄이려면 텍스처를 더 작은 벽에 맞추도록 왜곡하거나 Direct3D가 텍스처의 하반부를 사용하도록 하는 텍스처 좌표를 할당할 수 있습니다.

더 작은 벽에 맞게 텍스처를 왜곡하거나 크기를 조정하려는 경우 사용하는 텍스처 필터링 방법이 이미지 품질에 영향을 미칩니다. 자세한 내용은 텍스처 필터링(Direct3D 9)을 참조하세요.

대신 Direct3D가 더 작은 벽에 텍스처의 아래쪽 절반을 사용하도록 텍스처 좌표를 할당하기로 결정한 경우 이 예제에서 애플리케이션이 기본형의 꼭짓점(0.0,0.5), (1.0,0.5), (1.0,1.0) 및 (0.0,1.0)에 할당하는 텍스처 좌표입니다. Direct3D는 텍스처의 아래쪽 절반을 벽에 적용합니다.

꼭짓점의 텍스처 좌표가 1.0보다 클 수 있습니다. 0.0~1.0 범위가 아닌 꼭짓점에 텍스처 좌표를 할당하는 경우 텍스처 주소 지정 모드도 설정해야 합니다. 자세한 내용은 텍스처 주소 지정 모드(Direct3D 9)를 참조하세요.

텍스처 좌표 및 텍스처 단계

텍스처 좌표는 텍스처 단계를 통해 텍스처와 연결됩니다. 텍스처는 SetTexture(stageIndex, pTexture)를 사용하여 텍스처 단계에 할당됩니다. IDirect3DDevice9::SetTexture를 참조하세요.

FVF(유연한 꼭짓점 형식) 코드는 최대 8개의 텍스처 좌표 집합을 정의할 수 있습니다. 텍스처 좌표 데이터는 꼭짓점 데이터에서 사용자가 제공합니다. 데이터는 0부터 시작하는 인덱스(0 ~ 7)로 참조됩니다. 최대 8개의 텍스처 혼합 단계가 있습니다. 텍스처는 SetTexture( stageIndex, pTexture)를 사용하여 특정 스테이지와 연결됩니다.

이 작업이 완료되면 모든 단계에서 모든 텍스처 좌표 집합을 사용할 수 있습니다. 각 좌표 집합은 SetTextureStageState( stageIndex, D3DTSS_TEXCOORDINDEX, textureCoordinateIndex )를 사용하여 스테이지와 연결됩니다. IDirect3DDevice9::SetTextureStageState를 참조하세요. 이렇게 하면 텍스처 및 텍스처 좌표를 사용하도록 혼합 단계를 설정할 수 있습니다. 두 단계 이상은 동일한 텍스처 또는 텍스처 좌표를 사용할 수 있습니다.

추가 정보는 다음 topics 포함되어 있습니다.

Direct3D 텍스처