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

텍스처 소스


텍스처 소스는,IDirect3DTexture9 인터페이스에 처리 되고 있다. 텍스처 인터페이스의 포인터를 얻어오려면,IDirect3DDevice9::CreateTexture 메서드인가, 다음의 몇개의 Direct3D extension (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 가 받는 제 1 인수는,IDirect3DDevice9 인터페이스의 포인터이다. 제 2 인수는, 로드하는 텍스처가 들어가 있는 파일명을 Microsoft® Direct3D® 에 지시한다. 제 3 인수는, 생성 된 텍스처 개체를 나타내는 IDirect3DTexture9 인터페이스의 포인터 주소로 한다.

텍스처 소스를 사용한 렌더링

Direct3D 에서는, 텍스처 스테이지라고 하는 개념을 이용해 멀티 텍스처 혼합을 지원 한다. 텍스처 스테이지 마다, 텍스처와 그 텍스처로 실행 가능한 처리가 있다. 텍스처 스테이지의 텍스처는, 현재 텍스처의 모임을 형성한다. 더 자세한 정보는, 「텍스처 혼합」을 참조할것. 각 텍스처 스테이트는, 그 텍스처 스테이지에 캡슐화된다.

C++ 애플리케이션에서는, 각 텍스처 스테이트는 IDirect3DDevice9::SetTextureStageState 메서드로 설정할 필요가 있다. 제 1 인수의 값으로 스테이지 번호 (0 ~ 7)를 건네준다. 제 2 인수의 값에는,D3DTEXTURESTAGESTATETYPE 열거형의 멤버를 설정한다. 마지막 인수는, 특정의 텍스처 스테이트에 대한 스테이트값이다.

텍스처 인터페이스 포인터를 사용해, 최대 8 개의 텍스처를 블렌드 해 렌더링 할 수 있다. IDirect3DDevice9::SetTexture 메서드를 호출해 현재의 텍스처를 설정한다. Direct3D 는, 렌더링 하는 원시적으로 현재의 모든 텍스처를 블렌드 한다.

  IDirect3DDevice9::SetTexture 메서드는, 할당된 텍스처 표면의 참조 카운트를 인크리먼트(increment) 한다. 텍스처가 불필요하게 되었을 경우, 해당하는 스테이지의 텍스처를 NULL 로 설정할 필요가 있다. 이것을 실시하지 않으면 표면이 릴리즈 되지 않고 메모리 누수가 발생한다.

IDirect3DDevice9::SetRenderState 메서드를 호출해, 현재 텍스처의 텍스처 랩핑 스테이트를 설정할 수 있다. 제 1 인수의 값으로 D3DRS_WRAP0 ~ D3DRS_WRAP7 로부터 값을 1 개 건네준다. 또, D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2, D3DWRAPCOORD_3 플래그의 편성을 사용해, u, v, 또는 w 방향의 랩핑을 유효하게 한다.

또, 텍스처 퍼스펙티브 스테이트와 텍스처 필터링 스테이트를 설정하는 일도 가능하다. 「텍스처 필터링」을 참조할것.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP