J'apprends DirectX 11 et j'ai atteint la partie HLSL de base. Je veux utiliser plusieurs tampons constants dans le vertex shader, donc j'ai besoin de trouver le bon StartSlot
pour VSSetConstantBuffers
. J'ai cherché sur Google et trouvé que quelqu'un a suggéré d'utiliser GetResourceBindingDescByName
.GetResourceBindingDescByName dans DirectX 11 peut uniquement obtenir le premier cbuffer
J'ai essayé GetResourceBindingDescByName
, mais j'ai trouvé qu'il ne peut obtenir que le bon StartSlot
pour le premier cbuffer. Par exemple, dans mon vertex shader:
cbuffer Test1
{
float4 a;
};
cbuffer Test2
{
float4 b;
};
Maintenant GetResourceBindingDescByName("Test1", &bind_desc)
fonctionne correctement, mais GetResourceBindingDescByName("Test2", &bind_desc)
échouera (retour E_INVAILDARG
).
Quelqu'un peut-il m'aider?
Est-ce que b est utilisé dans votre shader? Il a peut-être été rayé par l'optimisation. – galop1n
Merci. J'utilise juste un dans mon shader. J'ajoute une référence à b dans mon code shader et le problème est résolu. Pouvez-vous répondre à cette question pour que je puisse la marquer comme la réponse à cette question? – delphifirst