Dans votre pixel shader, assurez-vous de renvoyer la structure non float4. Aussi ne beind la semantion color0 à la signature de la fonction, qui est de ne pas faire:
PS_OUTPUT myPS(VS_OUTPUT): COLOR0
Je duobt cela copmpile, mais il pourrait confondre le compilateur. Un simple shaders MRT ressemble à ceci:
PS_OUTPUT myPS(VS_OUTPUT)
{
PS_OUTPUT out;
out.color0 = float4(0.5,0.5,0.5,1.0);
out.color1 = float4(0.2,0.5,0.8,1.0);
out.color2 = float4(0.8,0.5,0.2,1.0);
return out;
}
Quels sont buffer0,1 & 2? Sont-ils le résultat d'un appel à CreateTexture()? (ou plutôt une surface de cette texture). Si c'est le cas, assurez-vous que la texture a été créée avec l'indicateur d'utilisation de la cible de rendu: D3DUSAGE_RENDERTARGET. Assurez-vous que votre carte peut prendre en charge le rendu sur plus d'une RT. (oublié comment faire - mais je doute qu'il ne les supportera pas.)
Si vous avez créé les tampons correctement, réglez-les correctement, et écrivez correctement les valeurs correctes du pixel shader, puis Je ne vois pas ce qui pourrait mal tourner. Que dit PIX * à propos du MRTS? Sont-ils écrits, et c'est l'affichage de ceux qui ne va pas? Ps: Vous avez fait un appel de tirage, je l'espère? :)
* PIX est une application du Kit de développement logiciel (SDK) DirectX. Si vous ne l'avez pas utilisé auparavant, vous manquez vraiment :)