Ok, donc en supposant que je l'ai, quelque part dans mon Shader, une déclaration comme suit (Notez que je suis d'activer le support héritage à partager Shaders entre DX9 et DX10):D3D10 HLSL: Comment lier une texture à un Texture2D global par réflexion?
Texture2D DiffuseMap;
je peux compiler le Shader sans problème, mais Je suis à une légère perte quant à la façon dont je lie un ShaderResourceView à "DiffuseMap". Quand je "réfléchis" le shader j'ai plutôt supposé qu'il apparaîtrait parmi la variable dans un tampon constant. Ce n'est pas le cas. En fait, je n'arrive pas à l'identifier nulle part. Alors, comment puis-je savoir quelle texture "stage" (pour utiliser le terme DX9) que je devrais lier le ShaderResourceView aussi? Edit: J'ai découvert que je pouvais identifier le nom de l'échantillonneur en utilisant "GetResourceBindingDesc". Je ne sais pas qui me aide du tout si :(
Edit2. De même, je n'avais pas remarqué que son même sous DX9 et ... à savoir que je ne peux obtenir l'échantillonneur
Edit3: mon Texture2D et Sampler ressemblent à ceci:
Texture2D DiffuseMap : DiffuseTexture;
sampler DiffuseSampler = sampler_state
{
Texture = (DiffuseMap);
MinFilter = Linear;
MaxFilter = Linear;
};
maintenant, dans le cadre de travail de l'effet que je pouvais obtenir le Texture2D par la sémantique « DiffuseTexture » Je pourrais alors faire un ResourceView (de D3D10)/Texture (D3D9) au Texture2D. Hélas, il ne semble pas y avoir de moyen de gérer la «sémantique» en utilisant les shaders standards de bog (ce serait génial de savoir comment D3D le fait, mais étudier le framework d'effets D3D11 ne m'a rien ar. Il semble que ce soit en train de le lire à partir des données binaires, c'est-à-dire compilées, et je ne vois que "DiffuseSampler" là-dedans).
Vous avez donc un fichier DX9 .fx (ou juste .vs/.ps?), Et vous voulez le compiler et l'exécuter dans un contexte DX10 en utilisant la réflexion? – Stringer
Effectivement ... oui. – Goz
Hmm, je vois votre problème maintenant. Mais si vous avez "DiffuseSampler", il suffit de savoir que vous avez besoin de lier à un slot donné un SRV d'une texture diffuse, non? Vous ne savez pas si vous devez également lier un état d'échantillonneur DX10 en utilisant * SetSamplers dans le même emplacement. – Stringer