Ich lerne DirectX 11 und habe grundlegende HLSL-Teil erreicht. Ich möchte mehrere konstante Puffer im Vertex-Shader verwenden, also muss ich das korrekte StartSlot
für VSSetConstantBuffers
finden. Ich habe auf Google gesucht und festgestellt, dass jemand vorgeschlagen hat, GetResourceBindingDescByName
zu verwenden.GetResourceBindingDescByName in DirectX 11 kann nur den ersten cbuffer bekommen
Ich versuchte GetResourceBindingDescByName
, aber festgestellt, dass es nur die richtige StartSlot
für den ersten cbuffer bekommen kann. Zum Beispiel in meinem Vertex-Shader:
cbuffer Test1
{
float4 a;
};
cbuffer Test2
{
float4 b;
};
Jetzt arbeitet GetResourceBindingDescByName("Test1", &bind_desc)
richtig, aber GetResourceBindingDescByName("Test2", &bind_desc)
fehl (Return E_INVAILDARG
).
Konnte mir jemand helfen?
Wird b in Ihrem Shader verwendet? Es wurde möglicherweise durch die Optimierung gestreift. – galop1n
Danke. Ich benutze nur einen in meinem Shader. Ich füge einen Verweis auf b in meinem Shader-Code hinzu und das Problem ist gelöst. Können Sie diese Frage beantworten, damit ich sie als Antwort auf diese Frage markieren kann? – delphifirst