샘플러 유형

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

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;] ... };

매개 변수

샘플러

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

이름

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

[인덱스]

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

SamplerType

[]sampler , sampler1D, sampler2D, sampler3D, samplerCUBE, sampler _ state, SamplerState 중 하나인 샘플러 형식에 있습니다.

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

  • Direct3D 10 이상에서는 SamplerComparisonState라는 하나의 추가 샘플러 형식을 지원합니다.

질감 = 질감 _ 변수> <;

Direct3D 9에만 해당합니다. 질감 변수입니다. 왼쪽에는 Texture 키워드가 필요합니다. 변수 이름은 괄호 안의 식 오른쪽에 속합니다.

state _ name = state _ value

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

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

// sampler-comparison state
ComparisonFunc

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

설명

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

예제

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)