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):
Dans le loop:
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
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?
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()
Merci pour votre aide!
dixcie
Partager