从DirectX中的单通道纹理采样

从DirectX中的单通道纹理采样,directx,textures,direct3d,hlsl,Directx,Textures,Direct3d,Hlsl,我有一个2D纹理格式为DXGI\U格式\U R32\U浮点。在我的像素着色器中,我从中采样: float sample = texture.Sample(sampler, coordinates); 这将导致以下编译器警告: 警告X3206:向量类型的隐式截断 我对此感到困惑。不应该返回单个通道,因此是标量值,而不是向量 我使用的是着色器模型4级别9_1 要么将纹理声明为具有一个通道,要么指定所需的通道。如果没有位,它将假定它是4通道纹理,因此Sample将返回float4 Texture2D

我有一个2D纹理格式为DXGI\U格式\U R32\U浮点。在我的像素着色器中,我从中采样:

float sample = texture.Sample(sampler, coordinates);
这将导致以下编译器警告:

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

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


我使用的是着色器模型4级别9_1

要么将纹理声明为具有一个通道,要么指定所需的通道。如果没有
位,它将假定它是4通道纹理,因此Sample将返回float4

Texture2D<float> texture;

纹理在CPU端声明为R32_浮点。在GPU端,我的纹理当前在着色器中声明为“Texture2D纹理”。我还需要做些什么来指定它只有一个通道吗?哦,我明白了,StackOverflow的格式化删除了两个“”实例纹理2D纹理是你想要的,我会编辑我的答案。
float sample = texture.Sample(sampler, coordinates).r;