从DirectX中的单通道纹理采样

时间:2013-07-12 21:28:58

标签: directx textures direct3d hlsl

我有一个2D纹理,格式为DXGI_FORMAT_R32_FLOAT。在我的像素着色器中,我从中采样:

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

这导致以下编译器警告:

  

警告X3206:向量类型的隐式截断

我对此感到困惑。不应该Sample返回单个通道,因此是标量值,而不是向量?

我正在使用着色器模型4级9_1。

1 个答案:

答案 0 :(得分:3)

将纹理声明为具有一个通道,或指定所需的通道。没有<float>位,它会假设它是一个4通道纹理,因此Sample将返回一个float4。

Texture2D<float> texture;

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