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 :

Difficulté d'affichage [VB.Net]


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut Difficulté d'affichage [VB.Net]
    Bonsoir,
    J'afiche sans difficulté un certain nombre de vertices...
    verts(p) = New CustomVertex.PositionTextured((my_tabx(v1)), (my_taby(v1)), (my_tabz(v1)), (my_tu(v1)), my_tv(v1)).... etc

    Le problème se pose au moment de l'affichage...
    Les triangles normalement les plus proches sont masqués par d'autres un peu plus éloignés...
    En modifiant le CullMode, j'apercoit une partie des triangles fantômes.

    J'ai bien sur essayé:
    presentParams.AutoDepthStencilFormat = DepthFormat.D16
    presentParams.EnableAutoDepthStencil = True

    et bien d'autres choses mais rien n'y fait...

    une idée...

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    A tout hasard est-ce qu'il ne manquerait pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    device.RenderState.ZBufferEnable = true;
    avant le rendu?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    Non, j'ai pas oublié...D'ailleur avec:
    device.RenderState.ZBufferEnable = true
    j'ai même plutôt moins de triangles qui s'affichent...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    Je mets ici l'ensemble de mon code...

    Code vb : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
        Public Sub OnResetDevice(ByVal sender As Object, ByVal e As EventArgs)
            Dim dev As Device = CType(sender, Device)
            dev.RenderState.Lighting = False
        End Sub 'OnResetDevice
        Public Sub New()
     
            InitializeComponent()
     
            Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True)
        End Sub 'New
     
        Public Sub InitializeGraphics(ByVal pic As String)
            ' Set our presentation parameters
            Dim presentParams As New PresentParameters
     
            presentParams.Windowed = True
            presentParams.SwapEffect = SwapEffect.Discard
            presentParams.AutoDepthStencilFormat = DepthFormat.D16
            presentParams.EnableAutoDepthStencil = True
     
     
            ' Create our device
            device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, presentParams)
            device.RenderState.CullMode = Cull.CounterClockwise
     
            vb = New VertexBuffer(GetType(CustomVertex.PositionTextured), Tlist * 3, device, Usage.Dynamic Or Usage.WriteOnly, CustomVertex.PositionTextured.Format, Pool.Default)
            AddHandler vb.Created, AddressOf Me.OnVertexBufferCreate
     
            OnVertexBufferCreate(vb, Nothing)
     
            tex = TextureLoader.FromFile(device, pic) ', 512, 512, 0, Usage.Dynamic, Format.Unknown, Pool.Default, Filter.Point, Filter.None, 0)
     
        End Sub 'InitializeGraphics
     
        Private Sub OnVertexBufferCreate(ByVal sender As Object, ByVal e As EventArgs)
            'Dim vb As VertexBuffer = CType(sender, VertexBuffer)
     
            Dim verts((Tlist * 3) - 1) As CustomVertex.PositionTextured
     
            Dim d As Integer
            For d = 0 To Checkedlist.Count - 1
     
                Dim d3dFile As String = Checkedlist(d)
                Pes3DFile.lire(d3dFile, False)
     
                Dim p As Integer = 0
                Dim i As Integer
     
                '********************** Affectation des vertices **********************************
                For i = 0 To ((Pes3DFile.my_index01.Count) - 1) Step 2
     
                    Dim v1, v2, v3, v4, v5, v6 As Integer
                    v1 = CType(Pes3DFile.my_index01(i), Integer)
                    v2 = CType(Pes3DFile.my_index02(i), Integer)
                    v3 = CType(Pes3DFile.my_index03(i), Integer)
                    v6 = CType(Pes3DFile.my_index01(i + 1), Integer)
                    v5 = CType(Pes3DFile.my_index02(i + 1), Integer)
                    v4 = CType(Pes3DFile.my_index03(i + 1), Integer)
     
                    verts(p) = New CustomVertex.PositionTextured((my_tabx(v1)), (my_taby(v1)), (my_tabz(v1)), (my_tu(v1)), my_tv(v1))
                    p += 1
                    verts(p) = New CustomVertex.PositionTextured((my_tabx(v2)), (my_taby(v2)), (my_tabz(v2)), (my_tu(v2)), my_tv(v2))
                    p += 1
                    verts(p) = New CustomVertex.PositionTextured((my_tabx(v3)), (my_taby(v3)), (my_tabz(v3)), (my_tu(v3)), my_tv(v3))
                    p += 1
                    verts(p) = New CustomVertex.PositionTextured((my_tabx(v4)), (my_taby(v4)), (my_tabz(v4)), (my_tu(v4)), my_tv(v4))
                    p += 1
                    verts(p) = New CustomVertex.PositionTextured((my_tabx(v5)), (my_taby(v5)), (my_tabz(v5)), (my_tu(v5)), my_tv(v5))
                    p += 1
                    verts(p) = New CustomVertex.PositionTextured((my_tabx(v6)), (my_taby(v6)), (my_tabz(v6)), (my_tu(v6)), my_tv(v6))
                    p += 1
                Next i
                '***************** Fin d'affectation des vertices **********************************
            Next d
     
            vb.SetData(verts, 0, LockFlags.None)
        End Sub 'OnVertexBufferCreate    
     
        Private Sub SetupCamera()
     
            device.Transform.View = Matrix.LookAtLH(New Vector3(0.0F, CameraPosl, VZoom_z), New Vector3(CameraPosLR, CameraPosHW, 0.0F), New Vector3(0, 1, 0))
            device.Transform.Projection = Matrix.PerspectiveFovLH(CSng(Math.PI / 4), 1.0F, -10000.0F, 500.0F)
     
            device.RenderState.ZBufferEnable = True
            device.RenderState.Lighting = False 
     
        End Sub 'SetupCamera
     
        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            device.Clear(ClearFlags.ZBuffer Or ClearFlags.Target, Color.CornflowerBlue, 1.0F, 0)
            device.BeginScene()
            SetupCamera()
     
            If _wireFrame Then
                device.RenderState.FillMode = FillMode.Solid
            Else
                device.RenderState.FillMode = FillMode.WireFrame
            End If
     
            device.VertexFormat = CustomVertex.PositionTextured.Format
     
            device.SetStreamSource(0, vb, 0)
     
            device.SetTexture(0, tex)
     
            device.DrawPrimitives(PrimitiveType.TriangleList, 0, Tlist)
     
            device.EndScene()
     
            device.Present()
            Me.Invalidate()
        End Sub 'OnPaint

    merci d'avance...

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu pourrais faire une capture d'écran ? Ca permettrait peut-être d'identifier un problème récurrent.

    Essaye aussi de diminuer le champ de vision, de -10000 à 500 ça paraît un poil beaucoup (et pourquoi -10000 ?? commence plutôt à 1).

  6. #6
    Membre expérimenté Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    Ta matrice de projection n'est pas bonne:
    device.Transform.Projection = Matrix.PerspectiveFovLH(CSng(Math.PI / 4), 1.0F, -10000.0F, 500.0F)

    essaye plutôt:
    device.Transform.Projection = Matrix.PerspectiveFovLH(CSng(Math.PI / 4), 1.3333333, 1.0F, 500.0F)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    J'ai réduit le "Matrix.PerspectiveFovLH(CSng(Math.PI / 4), 1.3333333, 1.0F, 500.0F)" comme proposé mais çà change rien...

    une vue avec le "presentParams.EnableAutoDepthStencil = True"
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2013, 10h13
  2. [IIS 6] Difficultés déploiement site ASP.Net
    Par Nanais19 dans le forum IIS
    Réponses: 0
    Dernier message: 18/10/2012, 08h44
  3. probleme d'affichage vb.net access
    Par ibrahima lamine dans le forum VB.NET
    Réponses: 3
    Dernier message: 20/01/2011, 16h33
  4. [DOM] DOM : difficulté d'affichage
    Par tusssss dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 27/01/2009, 16h34
  5. Difficulté d'affichage dans une comboBox via une requête
    Par moilou2 dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/07/2008, 10h44

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