2012-12-20 4 views
2

두 개의 텍스처를 HLSL 셰이더에 전달하는 경우 두 개의 SamplerState가 필요합니까? SamplerStates가 실제로 어떻게 작동하는지 조금 혼란 스럽습니다.여러 개의 텍스처에 대해 여러 개의 SamplerStates를 사용합니까

Texture2D InputTexture; 
SamplerState Sampler; 

float4 PSMain(float2 pos: TEXCOORD, float4 SVP : SV_POSITION) : SV_TARGET { 
    float4 image = InputTexture.Sample(Sampler, pos); 
    return image; 
} 

technique { 
    pass { 
     Profile = 9.3; 
     PixelShader = PSMain; 
    } 
} 

답변

2

당신은 무엇입니까 : 나는 그것들을 초기화하지 또는 아무것도, 난 그냥 프로파일 9.3 내 쉐이더를 컴파일하고

Tex.Sample(sampler, pos); 

전화

예 쉐이더 (WP8는 어떤 차이가 있는지) 이 작업을 멀티 텍스쳐라고합니다.

SamplerState 개체에는 샘플링 및 필터링 옵션이 포함되어 있으며 샘플러를 사용하면 해당 옵션으로 텍스처의 데이터를 읽을 수 있습니다.

//example 
SamplerState mySampler{ 
    Filter = MIN_MAG_MIP_LINEAR; //sets min/mag/mip filter to linear 
    AddressU = Wrap; 
    AddressV = Wrap; 
}; 

Here 기본 값과 상태 here 어떤 의미를 찾을 수 있습니다

은 Direct3D를 10에서 구문은 다음과 같다
Filter 
AddressU 
AddressV 
AddressW 
MipLODBias 
MaxAnisotropy 
ComparisonFunc 
BorderColor 
MinLOD 
MaxLOD 

:

많은 샘플러가 설정할 수있는 상태가 있습니다 .

결국 내가 원하는 의 수는 달성하려는 효과의 종류에 달려 있다고 말할 수 있습니다. 당신은 단지 멀티 텍스터 객체를 얻을 수있는 텍스처의 두 가지 색상을 곱해야 볼 수

Texture2D InputTextures[2]; 
SamplerState Sampler; 

float4 PSMain(float2 pos: TEXCOORD, float4 SVP : SV_POSITION) : SV_TARGET { 
    float4 color = InputTexture[0].Sample(Sampler, pos) * InputTexture[1].Sample(Sampler, pos); 
    return color; 
} 

Infact는 :하지만 실제로는 단순히 코드처럼 될 수 있습니다.

관련 문제