2013-07-12 5 views
1

DXGI_FORMAT_R32_FLOAT로 포맷 된 2D 텍스처가 있습니다. 내 픽셀 쉐이더에서 나는 thusly 히 그것에서 샘플 :DirectX에서 단일 채널 텍스처 샘플링

경고 X3206 :이 다음 컴파일러 경고 결과

float sample = texture.Sample(sampler, coordinates); 

을 나는에 의해 혼란 스러워요

벡터 형식의 암시 적 절단 이. Sample은 벡터와 반대로 단일 채널을 반환해야하며 따라서 스칼라 값을 반환하지 않아야합니까?

쉐이더 모델 4 레벨 9_1을 사용하고 있습니다.

답변

2

하나의 채널을 갖는 것으로 텍스처를 선언하거나 원하는 채널을 지정하십시오. <float> 비트가 없으면 4 채널 텍스처라고 가정하므로 Sample은 float4를 반환합니다.

Texture2D<float> texture; 

또는

float sample = texture.Sample(sampler, coordinates).r; 
+0

텍스처는 CPU 측 R32_FLOAT로 선언된다. GPU 측에서는 현재 텍스처가 쉐이더에서 "Texture2D 텍스처"로 선언되어 있습니다. 채널 하나만을 지정하기 위해해야 ​​할 일이 있습니까? –

+0

오, 여기 무슨 일이 있었는지, StackOverflow의 포맷은 ''의 두 인스턴스를 제거했습니다. 'Texture2D 텍스처; ' 은 원하는 답변이며, 답을 수정하겠습니다. –

+0

아! 정말 고맙습니다! –

관련 문제