我正在使用DirectX 12,試圖使用無人機進行渲染。這裏是我的像素着色器代碼:爲什麼在引用RWStructuredBuffer時不會編譯HLSL像素着色器?
struct PSInput
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
struct FragmentDataStruct
{
float4 color;
float depth;
};
struct FragmentAndLinkStruct
{
FragmentDataStruct fragmentData;
uint nextFragment;
};
RWStructuredBuffer <FragmentAndLinkStruct> FLBuffer : register(u0);
RWByteAddressBuffer StartOffsetBuffer : register(u1);
float4 PSMain(PSInput input) : SV_TARGET
{
input.color.x = float(FLBuffer[0].nextFragment);
return input.color;
}
它使用D3DCompileFromFile
功能時失敗編譯。
當我替換此行:
input.color.x = float(FLBuffer[0].nextFragment);
像這樣的東西:
FragmentAndLinkStruct otherThing;
otherThing.nextFragment = 1;
input.color.x = float(otherThing.nextFragment);
有沒有提到RWStructuredBuffer
的,然後它編譯就好了,並呈現正常。
我不認爲我有任何綁定數據的問題(VS圖形調試器顯示兩個無人機正確綁定)。不過,我認爲這不會影響着色器的編譯。
任何時候我參考FLBuffer
或,它不會編譯。
什麼會導致此問題?