Ahh, je suppose que c'est logique. Puisque le composant w n'est pas initialisé, la fonction mul() échouera.
Pour l'éviter, vous pouvez initialiser votre vecteur comme suit:
float4 PosImageSpace = (float4)0;
Je vais quand même vous recommander de compiler votre shaders en utilisant FXC en mode débogage, comme vous pouvez obtenir beaucoup de meilleures descriptions d'erreur de cette façon. Vous pouvez même configurer une étape de construction personnalisée qui vous permet de faire un clic droit sur le fichier .fx et de le compiler sans avoir à compiler l'ensemble de la solution/du projet.
Pour compilez le shaders en utilisant FXC dans une configuration de débogage:
fxc /Od /Zi /T fx_3_0 /Fo Directional_Lighting_Shader_Defaul.fxo Directional_Lighting_Shader_Defaul.fx
Vous pouvez trouver FXC dans C: \ Program Files \ Microsoft DirectX SDK \ Utilities \ bin
Pour configurer une version personnalisée étape dans Visual Studio check this sample from the DirectX SDK et également check this site
Vérifiez également this article on msdn à propos de l'utilisation de fxc.
Quelle erreur obtenez-vous? Il compile bien ici. – Tchami
C: \ Dokumente und Einstellungen \ Administrateur \ Desktop \ Program Files \ 3d \ Litte3DEngine2 \ bin \ Release \ Shader \ Directional_Lighting_Shader_Default.fx (91): ID3DXEffectCompiler :: CompileEffect: Il y avait une erreur de compilation expression ID3DXEffectCompiler: Compilation a échoué – gufftan
ligne 91 : PixelShader = compile ps_3_0 PS(); – gufftan