볼륨 텍스처 리소스(Direct3D 9)
볼륨 텍스처는 삼각형 또는 선과 같은 2차원 기본 형식을 그리는 데 사용할 수 있는 픽셀(텍셀)의 3차원 컬렉션입니다. 볼륨으로 텍스처화할 기본형의 각 꼭짓점마다 3개 요소의 텍스처 좌표가 필요합니다. 기본 형식이 그려질 때 포함된 각 픽셀은 2차원 텍스처 케이스와 유사한 규칙에 따라 볼륨 내의 일부 픽셀의 색 값으로 채워집니다. 볼륨으로 그릴 수 있는 3차원 기본 형식이 없으므로 볼륨이 직접 렌더링되지 않습니다.
안개, 폭발 등의 특수 효과에 볼륨 텍스처를 사용할 수 있습니다.
볼륨은 조각으로 구성되며 너비 x 높이 x 깊이 볼륨을 만들기 위해 누적된 너비 x 높이 2D 표면으로 간주할 수 있습니다. 각 조각은 단일 행입니다. 볼륨에는 각 수준의 차원이 이전 수준의 절반 크기로 잘리는 후속 수준이 있을 수 있습니다. 다음 다이어그램은 여러 수준이 있는 볼륨 텍스처의 모양을 보여 주세요.
볼륨 텍스처 만들기
아래 코드 예제에서는 볼륨 텍스처를 사용하는 데 필요한 단계를 보여 줍니다.
먼저 이 코드 예제와 같이 각 꼭짓점마다 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();
}
관련 항목