Bonjour,

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 il désactive le depth buffer... 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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        Dim Present As PresentParameters = New PresentParameters
        DispMode = Microsoft.DirectX.Direct3D.Manager.Adapters.Default.CurrentDisplayMode
 
        Present.Windowed = bWindowed
        Present.SwapEffect = SwapEffect.Flip 'SwapEffect.Discard 'discuss later
        Present.BackBufferCount = 1
        Present.BackBufferFormat = DispMode.Format
        Present.BackBufferHeight = DispMode.Height
        Present.BackBufferWidth = DispMode.Width
 
        Present.PresentationInterval = PresentInterval.Immediate
        Present.AutoDepthStencilFormat = DepthFormat.D16
        Present.EnableAutoDepthStencil = True
 
        'Device
        Device = New Direct3D.Device(0, Microsoft.DirectX.Direct3D.DeviceType.Hardware, Me, CreateFlags.HardwareVertexProcessing, Present)
        Device.IsUsingEventHandlers = False 'éviter erreur au 'End'
 
'je n'utilise que le viewport(1) pr l'instant et il fait tout l'écran
        Viewport(1) = New Viewport
        Viewport(2) = New Viewport
 
        Viewport(1).X = 0
        Viewport(1).Y = 0
        Viewport(1).Width = DispMode.Width
        Viewport(1).Height = DispMode.Height ' / 2
        Viewport(2).X = 0
        Viewport(2).Y = DispMode.Height / 2
        Viewport(2).Width = DispMode.Width
        Viewport(2).Height = DispMode.Height
Dans le loop:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
        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()
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!

dixcie