텍스처 필터링(Direct3D 9)

Direct3D가 기본 개체를 렌더링할 때는 3D 기본 개체를 2D 화면에 매핑합니다. 이때 기본 개체에 텍스처가 있으면 Direct3D는 해당 텍스처를 사용하여 기본 개체의 2D 렌더링 이미지를 구성하는 각 픽셀 색상을 생성해야 합니다. 기본 개체의 화면 이미지를 구성하는 각 픽셀마다 해당 텍스처에서 색상 값을 가져와야 합니다. 이러한 프로세스를 텍스처 필터링이라고 합니다.

텍스처 필터 연산을 실행하면 사용할 텍스처까지 일반적으로 확대 또는 축소됩니다. 다시 말해서 자체 이미지보다 더 크거나 작은 기본 객체의 이미지로 매핑됩니다. 텍스처가 확대되면 다수의 픽셀이 단일 텍셀로 매핑될 수 있습니다. 그 결과 이미지가 뭉친 것처럼 보일 수 있습니다. 텍스처가 축소되면 종종 단일 픽셀이 다수의 텍셀로 매핑됩니다. 그 결과 이미지가 흐릿하거나 매끄럽지 못할 수 있습니다. 이러한 문제를 해결하려면 텍셀 색상을 혼합하여 픽셀에 알맞은 색상을 찾아야 합니다.

Direct3D는 복잡한 텍스처 필터링 프로세스를 간소화하였습니다. 제공되는 텍스처 필터링 유형은 선형 필터링, 이방성 필터링 및 Mipmap 필터링 등 세 가지입니다. 텍스처 필터링을 따로 선택하지 않으면 Direct3D가 근접점 샘플링이라고 하는 기법을 사용합니다.

각 텍스처 필터링 유형에는 장단점이 있습니다. 예를 들어 선형 텍스처 필터링에서는 최종 이미지에서 가장 자리가 톱니 모양처럼 뾰족하거나 뭉친 듯한 모양이 될 수 있습니다. 하지만 계산에 따른 오버헤드를 낮출 수 있는 텍스처 필터링 방법입니다. Mipmap 필터링은 특히 이방성 필터링과 함께 사용하면 대체로 최상의 결과를 이끌어냅니다. 하지만 Direct3D가 지원하는 기법 중에서 가장 많은 메모리를 소비해야 합니다.

텍스처 인터페이스 포인터를 사용하는 애플리케이션은 IDirect3DDevice9::SetSamplerState 메서드를 호출하여 현재 텍스처 필터링 메서드를 설정해야 합니다. 첫 번째 매개 변수의 값을 텍스처 필터링 메서드를 선택하는 텍스처의 정수 인덱스 번호(0-7)로 설정합니다. 두 번째 매개 변수에 대한 D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER 또는 D3DSAMP_MIPFILTER 전달하여 확대, 축소 또는 mipmapping 필터를 설정합니다. D3DTEXTUREFILTERTYPE 열거형 형식의 멤버를 세 번째 매개 변수의 값으로 전달합니다.

이 섹션에서는 Direct3D에서 지원하는 텍스처 필터링 메서드를 제공합니다. 다음 topics 구성됩니다.

참고

D3DRENDERSTATETYPE 열거형 형식에 있는 텍스처 필터링 렌더링 상태는 텍스처 스테이지 상태로 대체되지만 IDirect3DDevice9::SetRenderState는 IDirect3DDevice2 버전과 달리 사용하려고 하면 실패하지 않습니다. 대신 시스템은 이러한 렌더링 상태의 효과를 다중 텍스트 계단식의 첫 번째 단계인 0단계에 매핑합니다. 예측할 수 없는 결과가 발생할 수 있으므로 애플리케이션은 레거시 렌더링 상태를 해당 텍스처 스테이지 상태와 혼합해서는 안 됩니다.

 

Direct3D 텍스처