Delphi/Directx : Plus d'image en grande résolution

Centauriel Messages postés 18 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 6 août 2009 - 13 juin 2008 à 17:15
Centauriel Messages postés 18 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 6 août 2009 - 15 juin 2008 à 03:00
Bonjour,

 
Moi et mes collègues développons un petit jeu 3D avec directx.

Le jeu fonctionne parfaitement en basse résolution. Quand la
résolution dépasse une certaine taille (1664x1000, ca marche,
1665x1000, ca marche plus), il n'y a plus d'image, juste l'arrière plan
de couleur.

 
La camera semble être correctement positionnée et orientée.
Son ratio hauteur/largeur est adaptée à la résolution choisie. Elle
regarde de 1 à 5000.  
 

devsmash.Transform.Projection := Matrix.PerspectiveFovLH(Math.PI / 2, largeur div hauteur , 1, 5000);
 
Tout semble bon.

 
Est-ce un problème connue ?

 
Merci d'avance pour votre aide.






Cento

8 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 juin 2008 à 19:55
hum hum

public:
static Matrix PerspectiveFovLH (
float fieldOfViewY,
float aspectRatio, <= = FLOAT!
float znearPlane,
float zfarPlane
)

Construit une matrice de projection en perspective utilisant la règle de la main gauche basée sur un cône d'analyse.Paramètres
* : fieldOfViewYType : Microsoft.WindowsMobile.DirectX..::.Matrix
Structure Matrix qui correspond à une matrice de projection en perspective utilisant la règle de la main gauche.

donc

PerspectiveFovLH(Pi/2, Largeur/Hauteur, 1, 5000);

PI/2 = 90° (1.5708)
PI/2.5 = ~72° (1.25664)
PI/3 = 60° (1.0472)
PI/3.5 = ~51° (0.8976)
PI/4 = 45° (0.7854)

resolutions utilisable :

3:2 = 1.50
720x480
1152x768
1440x960
1280x854

4:3 = 1.33334
320x240
640x480
768x576
800x600
1024x768
1280x960
1400x1050
1600x1200
2048x1536

5:3 = 1.66667
800x480
1280x768

5:4 = 1.25
1280x1024
2560x2048

8:5 (wide) = 1.6
320x200
1440x900

1280x800
1680x1050
1920x1200
2560x1600

16:9 = 1.77778
854x480
1280x720 (HD 720)
1920x1080 (HD 1080)

0
Centauriel Messages postés 18 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 6 août 2009
14 juin 2008 à 15:55
Si c'est juste changer le 'div' par un '/', ca ne fonctionne pas...

Merci quand même. Tu aurais une autres idée ?
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 juin 2008 à 19:47
essaye ça :

PerspectiveFovLH( Pi/4, 1920/1080, 1, 1000);

en reduisant zfar et en augmentant le diviseur de pi.

0
Farigh Messages postés 4 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 15 juin 2008
14 juin 2008 à 20:10
Bonjours, je fais parti de l'equipe, en changeant ces parametre, aucune amelioration n'est notée ...

Ca pourrait venir d'où ?

Peut etre d'ailleur ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Farigh Messages postés 4 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 15 juin 2008
14 juin 2008 à 21:35
J'ai trouvé d'ou ca viens, la fenetre est plus grande que la resolution de l'ecran ....
Ca regle le probleme en mode fenetré en faisant (la resolution voulu - la taille des bordures) mais le fullscreen je ne comprend pas pourquoi il ne marche pas vu que la resolution est celle de l'ecran etant donné que les bordures sont inexistantes ...

Comment activeriez-vous le mode full-screen ?
pour le moment je capture la resolution de l'utilisateur via

height := SystemInformation.VirtualScreen.Height;
width := SystemInformation.VirtualScreen.Width;

et j'initialise la taille de ma fenetre et de mon device avec et je mais le bord de la fenetre a none ...
0
Farigh Messages postés 4 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 15 juin 2008
14 juin 2008 à 21:50
désolé pour le triple post mais si ca peu faire avancer les choses ...
Bizarement sir je met la valeur "windowed" des presentparameters de mon device a False, le programme ne compile plus ...
Cela peut-il venir de la ?

voici mes PresentParameters :

      Presentpara[0] := PresentParameters.Create;
      Presentpara[0].SwapEffect := Swapeffect.Discard;
      Presentpara[0].Windowed := True;
      PresentPara[0].BackBufferWidth := formctrl.Width;
      PresentPara[0].BackBufferHeight := formctrl.Height;
      PresentPara[0].BackBufferFormat := Format.X8R8G8B8;
      PresentPara[0].BackBufferCount := 1;
      PresentPara[0].EnableAutoDepthStencil := True;
      PresentPara[0].AutoDepthStencilFormat := DepthFormat.D24S8;

Et la création du device :

devsmash := Device.Create(0, DeviceType.Hardware, formctrl, CreateFlags.hardwareVertexProcessing, presentpara);
      devsmash.RenderState.ZBufferEnable := True;
      devsmash.RenderState.Lighting := true;
      devsmash.RenderState.Ambient := Color.White;

si vous trouvez un truk qui pourait tout faire planter ...
0
Farigh Messages postés 4 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 15 juin 2008
15 juin 2008 à 01:52
C'est bon j'ai fini par trouvé le probleme et je ne suis pas passé par le fullscreen des presentparameters
 j'ai simplement jouer sur l'etat de la fenetre :

Self.FormBorderStyle := System.Windows.Forms.FormBorderStyle.None;
Self.StartPosition := System.Windows.Forms.FormStartPosition.Manual;
Self.TopMost := true;

Encore merci pour l'aide meme si elle n'a pas resolue le probleme ^^
0
Centauriel Messages postés 18 Date d'inscription vendredi 22 juin 2007 Statut Membre Dernière intervention 6 août 2009
15 juin 2008 à 03:00
Congratulation Farigh you've received the optimization medal !
0
Rejoignez-nous