带有 SamplerStates 的三元运算符

问题描述 投票:0回答:1

是否可以在 HLSL 中执行类似的操作:

SamplerState Sampler0 : register(s0, space1);
SamplerState Sampler1 : register(s1, space1);

int samplerIndex;
// ...

float4 color = texture.Sample(samplerIndex == 1 ? Sampler0 : Sampler1, uv);

我收到一个错误:

local resource not guaranteed to map to unique global resource

directx hlsl direct3d directx-12 direct3d12
1个回答
0
投票

对于这种情况,您最好这样做:

(a) 使用两个不同的静态采样器构建相同的着色器两次。

-或-

(b) 使用基于堆的采样器,以便您可以将其切换出去。

有关各种“组合”处理的示例,请参阅DirectX Tool Kit for DX12

© www.soinside.com 2019 - 2024. All rights reserved.