[XNA, C#] Changer le niveau de DirectX

Changer le niveau de DirectX [XNA, C#] - C#/.NET managed - Programmation

Marsh Posté le 18-01-2008 à 16:55:42    

Je dois coder un jeu 2D avec XNA sur un ordinateur dont la carte graphique ne supporte pas mieux que DirectX 8.
 
Le problème c'est que XNA semble vouloir obligatoirement utiliser DirectX 9.
Nulle part je ne trouve où changer ce réglage et lui faire utiliser DirectX 8.
 
Au lancement de n'importe quel projet de jeu (même un vierge fait tout seul par Visual Studio) j'ai une NoSuitableGraphicsDeviceException ("Could not find a Direct3D device that has a Direct3D9-level driver and supports pixel shader 1.1 or greater." ).
 
Quelqu'un saurait comment faire ?


Message édité par _Raynor_ le 18-01-2008 à 16:55:59
Reply

Marsh Posté le 18-01-2008 à 16:55:42   

Reply

Marsh Posté le 20-01-2008 à 22:20:17    

Non pas possible : http://msdn2.microsoft.com/en-us/library/bb203925.aspx c'est dans les minimum requirements

Reply

Marsh Posté le 21-01-2008 à 01:44:30    

tu as deux choses:  
- l'api et ses primitives
- les capacitées du périphérique D3D (qui te donnent accès aux primitives évolués au pas)
 
il est tout à fait possible de faire du D3D7 (T&L/renderstates) ou 8 (shaders 1.x) avec Direct3D 9.
 

Citation :


To run XNA Framework games on Windows, you will need a graphics card that supports Shader Model 1.1 or greater and DirectX 9.0c. We recommend that you use a graphics card that supports Shader Model 2.0 because some samples and starter kits may require it.


 
Donc en principe du hard d3d 8 devrait marcher.

Message cité 1 fois
Message édité par bjone le 21-01-2008 à 01:56:45
Reply

Marsh Posté le 21-01-2008 à 10:34:00    

bjone a écrit :

tu as deux choses:  
- l'api et ses primitives
- les capacitées du périphérique D3D (qui te donnent accès aux primitives évolués au pas)
 
il est tout à fait possible de faire du D3D7 (T&L/renderstates) ou 8 (shaders 1.x) avec Direct3D 9.
 

Citation :


To run XNA Framework games on Windows, you will need a graphics card that supports Shader Model 1.1 or greater and DirectX 9.0c. We recommend that you use a graphics card that supports Shader Model 2.0 because some samples and starter kits may require it.


 
Donc en principe du hard d3d 8 devrait marcher.


le souci, c'est que si tu peux effectivement faire du DX8 (même du DX1, pourquoi pas ?), XNA tente au démarrage de vérifier que la carte supporte bien DX9.
par contre, ce que je ne pige pas, c'est que DX normalement dispose d'une couche d'émulation software non ? justement pour pallier aux lacunes de la carte... le HAL si je ne me plante pas (Hardware Abstraction Layer). c'est du moins ce que j'ai toujours utilisé comme mode graphique dans les jeux qui merdaient (genre Anarchy Online et certaines versions des Catalyst, qui faisaient planter le jeu... un coup de HAL, ça ramme un bon coup, mais ça marchait nickel)
 
y'a pas une couille dans les drivers là plutôt ? ou dans le choix du device ?

Message cité 1 fois
Message édité par MagicBuzz le 21-01-2008 à 10:36:01
Reply

Marsh Posté le 21-01-2008 à 11:42:36    

Voir en particulier la FAQ XNA sur ce point précis: http://msdn2.microsoft.com/en-us/library/bb203941.aspx
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 21-01-2008 à 12:29:41    

Ca rejoint ce que je pensais : problème de drivers non à jour (en espérant qu'il existe une version à jour)

Reply

Marsh Posté le 21-01-2008 à 12:29:43    

MagicBuzz a écrit :


le souci, c'est que si tu peux effectivement faire du DX8 (même du DX1, pourquoi pas ?), XNA tente au démarrage de vérifier que la carte supporte bien DX9.
par contre, ce que je ne pige pas, c'est que DX normalement dispose d'une couche d'émulation software non ? justement pour pallier aux lacunes de la carte... le HAL si je ne me plante pas (Hardware Abstraction Layer). c'est du moins ce que j'ai toujours utilisé comme mode graphique dans les jeux qui merdaient (genre Anarchy Online et certaines versions des Catalyst, qui faisaient planter le jeu... un coup de HAL, ça ramme un bon coup, mais ça marchait nickel)
 
y'a pas une couille dans les drivers là plutôt ? ou dans le choix du device ?


 
bin le mode hal est le mode par défaut. http://msdn2.microsoft.com/en-us/library/bb172547.aspx
 
après ce qui est hardware, émulé ou pas supporté, c'est les caps qui doivent le dire.

Reply

Marsh Posté le 21-01-2008 à 13:03:34    

Merci pour vos réponses,
La carte graphique étant une GeForce4 440 Go il faut que je trouve les derniers ForceWare possible pour elle.


Message édité par _Raynor_ le 21-01-2008 à 13:03:42
Reply

Marsh Posté le 21-01-2008 à 18:54:57    

la gf4 étant d3d8, ça devrait marcher enfin je suppose :D

Reply

Marsh Posté le 21-01-2008 à 19:19:56    

bjone a écrit :

la gf4 étant d3d8, ça devrait marcher enfin je suppose :D


ben nan, le message d'erreur indique que le drivers doit supporter les instructions DX9C.
 
et vu au contraire que la carte ne supporte que DX8, il y a des chances pour que le drivers n'aille pas plus loin...
 
d'autant que cette carte est assez ancienne et peu performante, je suppose que nVidia ne juge pas nécessaire de maintenir une version récente des drivers, puisque de toute façon les applications nécessitant DX9 se trouveront trop justes sur une machine dotée d'une telle carte. donc rien n'est moins sûr... si les drivers forceware "classiques" passent avec, no soucy, tu pourras même faire du DX10, mais sinon... (enfin... faire... compiler avec un soft prévu pour DX10 tout du moins, évidement tu ne pourras pas utiliser les instructions DX10, ou éventuellement en mode émulé si le drivers le permet)


Message édité par MagicBuzz le 21-01-2008 à 19:20:39
Reply

Marsh Posté le 21-01-2008 à 19:19:56   

Reply

Marsh Posté le 21-01-2008 à 20:26:17    

D3D10 n'autorise pas la rétro-compatiblité (il est hors de la discussion).
 
normalement le runtime de D3D9 s'adapte à des drivers DDI 7~9. (enfin si il expose les caps qui vontbien)
 
bon après si XNA vérifie la présence des caps génénération D3D9 c'est possible mais c'est alors en contradiction avec la doc si ça jette sur une carte D3D 8, et en contradiction avec le D3D 9 tout court qui autorise d'utiliser du hard D3D 7 (avec bien sûr uniquement que le support T&L/renderstates).
 
maintenant c'est ptet que certains examples qui jettent comme indiqué sur le lien msdn. (il est logique que des examples xbox 360 jettent sur une gf4 :D)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed