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

볼륨 텍스처 소스


볼륨 텍스처란, 삼각형이나 라인등의 2D 기본도형의 드로잉(Drawing)에 사용할 수 있는 픽셀 (텍셀)의 3D 의 모임이다. 입체로 텍스처 처리되는 기본도형의 각 정점에는, 3 요소의 텍스처 좌표가 필요하다. 기본도형를 드로잉(Drawing) 하는 경우, 각 원시적으로 포함되는 픽셀에는, 2D 텍스처의 경우와 같은 규칙에 따라, 볼륨내의 픽셀의 색값이 설정된다. 볼륨을 사용해 드로잉(Drawing) 할 수 있는 3D 기본도형가 없기 때문에, 볼륨을 직접 렌더링 할 수 없다.

볼륨 텍스처는, 아직들인 포그(안개:fog)나 폭발등의 특수 효과에 사용할 수 있다.

볼륨은 슬라이스에 정리해 × 높이의 2D 표면이 스택 되어, × 높이 × 깊이의 볼륨을 구성 하면 생각할 수가 있다. 각 슬라이스는, 단일행이다. 입체는 밉레벨을 가질 수가 있다. 각 레벨의 크기는, 직전 레벨의 반의 크기에 컷 된다. 다음 그림은 복수 레벨을 가지는 볼륨 텍스처를 나타내고 있다.

8 × 2 × 4,4 × 1 × 2,2 × 1 × 1 의 큐브 표현을 가지는 볼륨 텍스처

볼륨 텍스처의 생성

다음 코드는, 볼륨 텍스처를 사용하기 위해서(때문에) 필요한 순서를 나타내고 있다.

우선, 각 정점에 대해서 3 개의 텍스처 좌표를 가지는 커스텀 정점 타입을 지정한다. 다음 코드에 예를 나타낸다.

struct VOLUMEVERTEX
{
    FLOAT x, y, z;
    DWORD color;
    FLOAT tu, tv, tw;
};

#define D3DFVF_VOLUMEVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|
                             D3DFVF_TEX1|D3DFVF_TEXCOORDSIZE3(0))

다음에, 정점에 데이터를 설정한다.

VOLUMEVERTEX g_vVertices[4] =
{
    { 1.0f, 1.0f, 0.0f, 0xffffffff, 1.0f, 1.0f, 0.0f },
    {-1. 0f, 1.0f, 0.0f, 0xffffffff, 0.0f, 1.0f, 0.0f },
    { 1.0f,-1. 0f, 0.0f, 0xffffffff, 1.0f, 0.0f, 0.0f },
    {-1. 0f,-1. 0f, 0.0f, 0xffffffff, 0.0f, 0.0f, 0.0f }
};

다음에, 정점 버퍼를 생성 해, 정점의 데이터를 설정한다.

다음의 순서는,IDirect3DDevice9::CreateVolumeTexture 메서드를 사용해, 볼륨 텍스처를 생성 하는 것이다. 다음 코드에 예를 나타낸다.

LPDIRECT3DVOLUMETEXTURE9 pVolumeTexture;
d3dDevice->CreateVolumeTexture( 8, 4, 4, 1, 0, D3DFMT_R8G8B8, D3DPOOL_MANAGED, 
                                &pVolumeTexture );

기본도형를 렌더링 하기 전에, 현재 텍스처를 전의 순서로 생성 한 볼륨 텍스처로 설정한다. 다음 코드는, 삼각형 스트립의 렌더링 프로세스 전체를 나타내고 있다.

if( SUCCEEDED( d3dDevice->BeginScene() ) )
{
    // Draw the quad, with the volume texture.
    d3dDevice->SetTexture( 0, pVolumeTexture );
    d3dDevice->SetFVF( D3DFVF_VOLUMEVERTEX );
    d3dDevice->SetStreamSource( 0, pVB, sizeof(VOLUMEVERTEX) );
    d3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);

   // End the scene.
   d3dDevice->EndScene();
}


© 2002 Microsoft Corporation. All rights reserved.
↑TOP