IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Viewport avec DirectX9


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut Viewport avec DirectX9
    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

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Hhhhhhmmmmmmm.....

    Je ne travaille pas avec les viewport, mais il manque les données MinZ et MaxZ de tes viewport.

    Peut-être cela va arranger ton problème.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    Super, merci beaucoup! Désolé pour la bête question alors mais ce n'était pas dans les tutoriaux que j'ai utilisés...

    Par contre j'ai un autre problème avec les viewports: 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With Device.RenderState
                .FogStart = 2000
                .FogEnd = 7000
                .FogColor = Color.Gray
                .FogTableMode = FogMode.Linear
                .FogEnable = True
    End With
    Merci pour l'aide!

    dixcie

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    Ben le brouillard a réapparu, je ne sais pas comment, donc pour l'instant c'est résolu... Merci pour votre aide!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DirectX 9] creer une Texture Atlas avec Directx9
    Par mbousoli dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2015, 17h07
  2. DirectX9 avec Dev-C++, Direct3dCreate9@4
    Par nevada51 dans le forum DirectX
    Réponses: 5
    Dernier message: 10/01/2006, 18h30
  3. [DIRECTX9] Problème avec la fonction CreateDevice
    Par fabnet dans le forum DirectX
    Réponses: 8
    Dernier message: 15/07/2005, 18h37
  4. [debutant] premier pas avec le SDK directX9
    Par arno2004 dans le forum DirectX
    Réponses: 6
    Dernier message: 27/05/2004, 21h03
  5. Problème d'image avec DirectX9 et c# VS.net...
    Par lilly_lilly dans le forum DirectX
    Réponses: 1
    Dernier message: 02/03/2004, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo