텍스처 리소스(Direct3D 9)

텍스처 리소스는 IDirect3DTexture9 인터페이스에서 구현됩니다. 텍스처 인터페이스에 대한 포인터를 가져오려면 IDirect3DDevice9::CreateTexture 메서드 또는 다음 D3DX 함수를 호출합니다.

다음 코드 예제에서는 D3DXCreateTextureFromFile 을 사용하여 Tiger.bmp 텍스처를 로드합니다.

// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.

LPDIRECT3DTEXTURE9 pTexture;

D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);

D3DXCreateTextureFromFile에서 허용하는 첫 번째 매개 변수는 IDirect3DDevice9 인터페이스에 대한 포인터입니다. 두 번째 매개 변수는 Direct3D에 텍스처를 로드할 파일의 이름을 알려줍니다. 세 번째 매개 변수는 생성된 텍스처 개체를 나타내는 IDirect3DTexture9 인터페이스에 대한 포인터의 주소를 사용합니다.

텍스처 리소스를 사용하여 렌더링

Direct3D는 텍스처 스테이지의 개념을 통해 다중 텍스처 혼합을 지원합니다. 각 텍스처 스테이지는 텍스처와 텍스처에서 실행할 수 있는 연산으로 구성됩니다. 텍스처 스테이지의 텍스처는 현재 텍스처 집합을 형성합니다. 자세한 내용은 텍스처 혼합(Direct3D 9)을 참조하세요. 텍스처 스테이지에서 각 텍스처의 상태는 캡슐화됩니다.

C++ 애플리케이션에서 각 텍스처의 상태는 IDirect3DDevice9::SetTextureStageState 메서드를 사용하여 설정해야 합니다. 스테이지 번호(0-7)를 첫 번째 매개 변수의 값으로 전달합니다. 두 번째 매개 변수의 값을 D3DTEXTURESTAGESTATETYPE 열거형 형식의 멤버로 설정합니다. 최종 매개 변수는 특정 텍스처 상태의 상태 값입니다.

애플리케이션은 텍스처 인터페이스 포인터를 사용하여 최대 8개의 텍스처 혼합을 렌더링할 수 있습니다. IDirect3DDevice9::SetTexture 메서드를 호출하여 현재 텍스처를 설정합니다. Direct3D는 모든 현재 텍스처를 렌더링하는 기본 형식에 혼합합니다.

참고

IDirect3DDevice9::SetTexture 메서드는 할당되는 텍스처 표면의 참조 횟수를 증가합니다. 텍스처가 더 이상 필요하지 않은 경우 적절한 단계에서 텍스처를 NULL로 설정해야 합니다. 이 작업을 수행하지 않으면 표면이 해제되지 않아 메모리 누수가 발생합니다.

 

애플리케이션은 IDirect3DDevice9::SetRenderState 메서드를 호출하여 현재 텍스처에 대한 텍스처 래핑 상태를 설정할 수 있습니다. D3DRS_WRAP0 값을 첫 번째 매개 변수의 값으로 D3DRS_WRAP7 전달하고 D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 및 D3DWRAPCOORD_3 플래그의 조합을 사용하여 u, v 또는 w 방향으로 래핑할 수 있습니다.

애플리케이션 역시 텍스처 원근감과 텍스처 필터링 상태를 설정할 수 있습니다. 텍스처 필터링(Direct3D 9)을 참조하세요.

Direct3D 텍스처