텍스처 주소 지정 모드(Direct3D 9)

Direct3D 응용 프로그램은 모든 기본 개체의 꼭짓점에 텍스처 좌표를 지정할 수 있습니다. 자세한 내용은 텍스처 좌표(Direct3D 9)를 참조하세요. 일반적으로 꼭짓점에 할당되는 u 및 v-텍스처 좌표는 0.0~1.0(0.0과 1.0 포함)의 범위 내에 있습니다. 하지만 범위 외부에 텍스처 좌표를 지정할 경우 특수한 텍스처 효과를 생성할 수 있습니다.

[0.0, 1.0] 범위를 벗어나는 텍스처 좌표에 대한 Direct3D의 기능은 텍스처 주소 지정 모드를 설정하여 제어합니다. 예를 들어 애플리케이션에서 텍스처가 기본 객체에 타일링되도록 텍스처 주소 지정 모드를 설정할 수 있습니다.

Direct3D는 애플리케이션에서 텍스처 래핑이 가능합니다. 텍스처 주소 지정 모드를 D3DTADDRESS_WRAP 설정은 텍스처 래핑 수행과 동일하지 않습니다. 텍스처 주소 지정 모드를 D3DTADDRESS_WRAP 설정하면 원본 텍스처의 여러 복사본이 현재 기본 형식에 적용되고 텍스처 래핑을 사용하도록 설정하면 시스템에서 텍스처 처리된 다각형을 래스터화하는 방법이 변경됩니다. 자세한 내용은 텍스처 래핑(Direct3D 9)을 참조하세요.

텍스처 래핑을 효과적으로 사용하면 [0.0, 1.0] 범위를 벗어나는 텍스처 좌표가 잘못된 것으로 나타나지만, 이 경우에는 잘못된 텍스처 좌표를 래스터화하는 동작이 정의되지 않았습니다. 텍스처 래핑을 사용하면 텍스처 주소 지정 모드는 사용하지 못합니다. 따라서 텍스처 래핑을 사용할 때는 애플리케이션이 텍스처 좌표를 0.0보다 낮게, 혹은 1.0보다 높게 지정하지 않도록 주의해야 합니다.

주소 지정 모드 설정

IDirect3DDevice9::SetSamplerState 메서드를 호출하여 개별 텍스처 단계에 대한 텍스처 주소 지정 모드를 설정할 수 있습니다. Sampler 매개 변수에서 원하는 텍스처 단계 식별자를 지정합니다. Type 매개 변수를 D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV 또는 D3DSAMP_ADDRESSW 값으로 설정하여 u-, v-또는 w-addressing 모드를 개별적으로 업데이트합니다. Value 매개 변수는 설정되는 모드를 결정합니다. D3DTEXTUREADDRESS 열거형 형식의 멤버일 수 있습니다. 텍스처 스테이지에 대한 현재 텍스처 주소 모드를 검색하려면 D3DSAMPLERSTATETYPE 열거형의 D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV 또는 D3DSAMP_ADDRESSW 멤버를 사용하여 정보를 원하는 주소 모드를 식별하여 IDirect3DDevice9::GetSamplerState를 호출합니다.

디바이스 제한 사항

일반적으로 시스템이 0.0~1.0(0.0과 1.0 포함)의 범위를 벗어나는 텍스처 좌표를 허용하기는 하지만 하드웨어 제한으로 인해 범위를 벗어날 수 있는 텍스처 좌표에도 한계가 있습니다. 렌더링 디바이스는 디바이스 기능을 검색할 때 D3DCAPS9 구조체의 MaxTextureRepeat 멤버에서 이 제한을 전달합니다. 이 멤버의 값은 디바이스에서 허용하는 텍스처 좌표의 전체 범위를 설명합니다. 예를 들어 한계 값이 128이면 입력되는 텍스처 좌표가 -128.0~+128.0의 범위를 벗어나서는 안 됩니다. 이 범위를 벗어나는 텍스트 좌표의 꼭짓점을 전달하면 무효 처리됩니다. 자동 텍스처 좌표 생성 및 텍스처 좌표 변환에 따라 생성된 텍스처 좌표에도 동일한 제한이 따릅니다.

MaxTextureRepeat의 해석은 D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 기능 비트의 영향을 받습니다. 이 비트가 설정되면 MaxTextureRepeat 멤버의 값이 설명된 대로 정확하게 사용됩니다. 그러나 D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 설정되지 않은 경우 텍스처 반복 제한은 텍스처 좌표로 인덱싱된 텍스처의 크기에 따라 달라집니다. 이 경우 유효한 텍스처 좌표 범위를 계산하려면 MaxTextureRepeat 을 가장 큰 세부 수준에서 현재 텍스처 크기로 조정해야 합니다. 예를 들어 텍스처 차원이 32이고 MaxTextureRepeat 이 512인 경우 실제 유효한 텍스처 좌표 범위는 512/32 = 16이므로 이 디바이스의 텍스처 좌표는 -16.0에서 +16.0 범위 내에 있어야 합니다.

텍스처 주소 지정 모드에 대한 추가 정보는 다음 topics 포함되어 있습니다.

기본 텍스트 변환 개념