다음을 통해 공유


샘플러 유형

샘플러 상태와 샘플러 비교 상태를 선언하려면 다음 구문을 사용합니다.

Direct3D 9와 Direct3D 10 이상 간의 차이점:
Direct3D 9의 샘플러 구문은 다음과 같습니다.
sampler Name = SamplerType{ Texture = <texture_variable>; [state_name = state_value;] ... };

Direct3D 10 이상에서 샘플러의 구문은 텍스처 개체 및 샘플러 배열을 지원하도록 약간 변경됩니다.

SamplerType Name[Index]{ [state_name = state_value;] ... };

매개 변수

sampler

Direct3D 9에만 해당됩니다. 필수 키워드입니다.

Name

샘플러 변수 이름을 고유하게 식별하는 ASCII 문자열입니다.

[Index]

Direct3D 10 이상에만 해당됩니다. 선택적 배열 크기로 1보다 크거나 같은 양의 정수입니다.

SamplerType

[in] 샘플러 형식은 sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState 중 하나입니다.

Direct3D 9와 Direct3D 10 이상 간의 차이점:

  • Direct3D 10 이상에서는 한 가지 샘플러 유형 SamplerComparisonState를 추가로 지원합니다.

Texture = <texture_variable>;

Direct3D 9에만 해당됩니다. 텍스처 변수입니다. 왼쪽에는 Texture 키워드가 필요합니다. 변수 이름은 꺾쇠 괄호 안에 있는 식의 오른쪽에 속합니다.

state_name = state_value

[in] 선택적 상태 할당입니다. 할당의 왼쪽은 상태 이름이고, 오른쪽은 상태 값입니다. 모든 상태 할당은 문 블록 내에 나타나야 합니다(중괄호 안). 각 문은 세미콜론으로 구분됩니다. 다음 표에서는 가능한 상태 이름을 나열합니다.

// sampler state
AddressU
AddressV
AddressW
BorderColor
Filter
MaxAnisotropy
MaxLOD
MinLOD
MipLODBias

// sampler-comparison state
ComparisonFunc

각 식의 오른쪽은 각 상태에 할당된 값입니다. Direct3D 11의 가능한 상태 값은 D3D11_SAMPLER_DESC 구조체를 참조하세요. 상태 이름과 구조체의 멤버 간에는 일 대 일의 관계가 있습니다. 다음 예제를 참조하세요.

설명

효과를 구현할 때 샘플러 상태는 렌더링을 위해 파이프라인에서 설정해야 할 수 있는 여러 유형의 상태 중 하나입니다. 효과에 설정할 수 있는 가능한 모든 상태의 목록은 다음을 참조하세요.

  • Direct3D 10은 상태 그룹을 사용합니다.
  • Direct3D 9는 개별 상태를 사용합니다.

Direct3D 9와 Direct3D 10의 차이점
다음은 BasicHLSL 샘플의 Direct3D 9 샘플러의 부분 예제입니다.
sampler MeshTextureSampler = 
sampler_state
{
    Texture = <g_MeshTexture>;
    MipFilter = LINEAR;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};

다음은 BasicHLSL10 샘플의 Direct3D 10 샘플러의 부분 예제입니다.

SamplerState MeshTextureSampler
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

다음은 Direct3D 10에서 샘플러 비교 상태를 선언하고 비교 샘플러를 호출하는 부분 예제입니다.

SamplerComparisonState ShadowSampler
{
   // sampler state
   Filter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT;
   AddressU = MIRROR;
   AddressV = MIRROR;

   // sampler comparison state
   ComparisonFunc = LESS;
};
        
float3 vModProjUV;
  ...
float fShadow = g_ShadowMap.SampleCmpLevelZero( ShadowSampler, vModProjUV.xy, vModProjUV.z);

추가 정보

데이터 형식(DirectX HLSL)