je fais un jeu en DirectX9 avec vb 2008, qui fonctionne très bien. Seulement si j'ajoute un viewport et que j'y mets des choses je pense qu'il désactive le depth buffer... (Les objets sont dessinés dans l'ordre que je les dessine et pas dans l'ordre de profondeur.) Je ne sais pas pourquoi: ça marche bien si je n'utilise pas de viewport.
Voici quelques parties du code:
Dans l'initialisation (il ne devrait pas y avoir de problème):
[CODE] Dim Present As PresentParameters = New PresentParameters
DispMode = Microsoft.DirectX.Direct3D.Manager.Adapters.Default.CurrentDisplayMode
Dans le loop:
[CODE] Device.Viewport = Viewport(1)
'----------------------- BEGIN -----------------------
Device.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, Color.Gray, 1.0, 0)
'On dessine
Device.EndScene() 'all drawings before this line
Device.Present()
[/CODE]
Comment ce fait-il donc que si j'enlève la ligne device.viewport = viewport(1), ça marche, et que comme ça il dessine les objets dans l'ordre que je les dessine et pas en fonction de la profondeur à laquelle ils se trouvent?
Merci pour votre aide!
Comme je fait plutot de l'OpenGL, je ne suis pas sur d'ou vien ton probleme, mais il semble que t'on depth buffer est simplement a off lorsque tu dessine, alors remet le a on encore une fois juste avant de dessiner, je crois que ca arrangera le probleme.
Sinon, t'inquiete, on trouvera surement...
Mais ça ne change rien...
De plus, je remarque que quand je mets plusieurs viewports, seul le premier contient les renderstates tels que je les ai spécifiés (par exemple le brouillard), même si je les ajoute à chaque fois après avoir changé de viewport et avant avoir dessiné. bizarre...
Désolé c'était bête: je n'ai pas mis les minZ et maxZ des Viewports pcq je ne savais pas à quoi ça servait. Il suffisait de les mettre sur 0 et 1 et ça marche.
Par contre j'ai un autre problème avec les viewports: si j'en utilise plusieurs le premier est parfait mais les suivants ne montrent pas le brouillard. (Les autres renderstates comme alphablendenable et tout fonctionnent bien.)
Voici le code que je répète après chaque mise en place d'un autre viewport:
[CODE]
With Device.RenderState
.FogStart = 2000
.FogEnd = 7000
.FogColor = Color.Gray
.FogTableMode = FogMode.Linear
.FogEnable = True
End With
[/CODE]