DirectX Graphics 프로그래밍 가이드 고정 기능 파이프라인 텍스처 기본적인 텍스처 처리의 개념 텍스처 어드레싱 모드   [목차열람] [주소복사] [슬롯비우기]
텍스처어드레싱모드
 
Microsoft DirectX 9.0

텍스처어드레싱모드


Microsoft® Direct3D® 애플리케이션에서는, 어느 기본도형의 어느 정점에도 텍스처 좌표를 할당할 수가 있다. 더 자세한 정보는, 「텍스처 좌표」를 참조할것. 보통, 정점에 할당하는 텍스처 좌표 u 및 v 의 범위는, 0.0 으로 1.0 을 포함한 0.0 ~ 1.0 이다. 그러나, 이 범위외의 텍스처 좌표를 할당해, 특수한 텍스처 이펙트를 생성 할 수도 있다.

텍스처어드레싱모드를 설정하는 것으로,[0.0, 1.0] 의 범위외의 텍스처 좌표로 Direct3D 가 실시하는 처리를 제어할 수 있다. 예를 들어, 애플리케이션으로 텍스처어드레싱모드를 설정해, 기본도형 전체에 텍스처를 타일과 같이 칠 수가 있다. 다음 주제로 한층 더 자세하게 설명한다.

Direct3D 를 사용해, 애플리케이션에서는 텍스처 랩핑을 실행할 수 있다. 텍스처어드레싱모드를 D3DTADDRESS_WRAP 로 설정하는 것으로, 텍스처 랩핑을 실행하는 것으로는 같지 않기 때문에 주의 해야 한다. 텍스처어드레싱모드를 D3DTADDRESS_WRAP 로 설정 하면, 현재의 원시적으로 적용되는 전송원텍스처의 복사가 복수 생성된다. 텍스처 랩핑을 유효하게 하면, 텍스처 처리된 다각형을 시스템이 래스터 처리할 때 방법이 변경된다. 더 자세한 정보는, 「텍스처 랩핑」을 참조할것.

텍스처 랩핑을 유효하게 하면, 사실상 [0.0, 1.0] 의 범위외에 있는 텍스처 좌표를 무효로 할 수 있어 이러한 부적절한 텍스처 좌표의 래스터화의 동작을 미정도리로 할 수 있다. 텍스처 랩핑이 유효하게 되어 있으면 텍스처어드레싱모드는 사용되지 않는다. 텍스처 랩핑이 유효하게 되어 있는 경우에는, 애플리케이션으로 지정하는 텍스처 좌표가 0.0 보다 작아지거나 1.0 보다 커지지 않게 주의 해야 한다.

어드레싱모드의 설정

IDirect3DDevice9::SetSamplerState 메서드를 호출해, 각 텍스처 스테이지에 텍스처어드레싱모드를 설정할 수 있다. 제 1 인수에 목적의 텍스처 스테이지 식별자를 지정한다. 제 2 인수에 D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV, 또는 D3DSAMP_ADDRESSW 값을 설정해, u, v, 또는 w 어드레싱모드를 개별적으로 갱신한다. IDirect3DDevice9::SetSamplerState 에 건네주는 제 3 인수는, 설정되어 있는 모드를 판별한다. 이것에는,D3DTEXTUREADDRESS 열거형의 어느 멤버를 지정해도 상관없다. 텍스처 스테이지의 현재의 텍스처어드레싱모드를 얻어오려면,IDirect3DDevice9::GetSamplerState 를 호출해,D3DTEXTURESTAGESTATETYPE 열거의 D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV, 또는 D3DSAMP_ADDRESSW 멤버를 사용해, 정보의 취득 대상의 어드레싱모드를 식별한다.

장치 제한

일반적으로, 시스템에서는 0.0 ~ 1.0 (0.0 으로 1.0 을 포함한다)의 범위외에 있는 텍스처 좌표에서도 사용할 수 있지만, 많은 경우, 그 허용 범위는 하드웨어 제한에 의해 영향을 받는다. 장치 능력을 얻어온다와 렌더링 장치는 이 제한을 D3DCAPS9 구조체의 MaxTextureRepeat 멤버에 알린다. 이 멤버내의 값은, 장치로 사용 가능한 텍스처 좌표의 전범위를 나타낸다. 예를 들어, 이 값이 128 의 경우, 입력 텍스처 좌표는 -128. 0 ~ +128. 0 의 범위내에 없으면 안 된다. 이 범위외의 텍스처 좌표를 가지는 정점을 건네주면 무효가 된다. 자동 텍스처 좌표 생성 및 텍스처 좌표변화의 결과로서 생성된 텍스처 좌표에 대해서도, 이것과 같은 제한이 적용된다.

MaxTextureRepeat 의 해석도 D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 능력 비트에 의해 바뀐다. 이 비트를 설정 하면,D3DCAPS9MaxTextureRepeat 멤버의 값이 정의대로 정확하게 사용된다. 다만, D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 가 설정되지 않은 경우는, 텍스처 반복 제한은, 텍스처 좌표에 의해 인덱스화 된 텍스처의 사이즈에 의존한다. 이 경우, 유효한 텍스처 좌표의 범위를 계산하기 위해서,MaxTextureRepeat 는, 현재의 텍스처 사이즈에 의해 최대 상세 레벨로 스케일링 될 필요가 있다. 예를 들어, 텍스처의 치수가 32 로,MaxTextureRepeat 값이 512 의 경우, 실제의 유효한 텍스처 좌표 범위는 512/32 = 16 이 된다. 따라서, 이 장치에서는 -16. 0 ~ +16. 0 의 범위내에 텍스처 좌표가 존재할 필요가 있다.

텍스처어드레싱모드의 더 자세한 정보는, 다음 주제를 참조할것.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP