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 :

Projection 2D


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut [Résolu] Projection 2D
    Bonjour,
    j'aimerai initialiser une matrix de projection pour pouvoir créer une scene 2d. J'aimerai savoir comment initialiser D3DXMatrixLookAtLH( et D3DXMatrixOrthoLH( pour que le point 0,0 soit en haut a gauche et le point 800,600 en bas a droite (affichage 2D classique).
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 71
    Points : 78
    Points
    78
    Par défaut
    D3DXMATRIX *D3DXMatrixOrthoOffCenterLH( D3DXMATRIX *pOut,
    FLOAT l,
    FLOAT r,
    FLOAT b,
    FLOAT t,
    FLOAT zn,
    FLOAT zf
    );
    avec l = 0, r = 800, b = 0, t = 600, zn = ??? (je mettrai 0) et zf = ??? (je mettrai 100, mais c'est suivant ce que tu veux comme profondeur max)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    J'ai encore un probleme ,j'ai initialiser la vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    D3DXMatrixOrthoOffCenterLH( &matProj, 
    		0.0f, 
    		800.0f, 
    		0.0f, 
    		600.0f, 
    		0.0f, 
    		100.0f 
    		); 
    m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
    et un vecteur qui est censé recouvrir tout l'ecran

    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
     
        pVertices[0].position = D3DXVECTOR3(  0.0f,  0.0f,  0.0f );
        pVertices[0].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
        pVertices[0].tu = 0.0f;
        pVertices[0].tv = 0.0f;
        pVertices[1].position = D3DXVECTOR3(  800.0f,  0.0f,  0.0f );
        pVertices[1].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
        pVertices[1].tu = 1.0f;
        pVertices[1].tv = 0.0f;
        pVertices[2].position = D3DXVECTOR3(  0.0f, 600.0f,  0.0f );
        pVertices[2].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
        pVertices[2].tu = 0.0f;
        pVertices[2].tv = 1.0f;
        pVertices[3].position = D3DXVECTOR3(  800.0f, 600.0f,  0.0f );
        pVertices[3].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
        pVertices[3].tu = 1.0f;
        pVertices[3].tv = 1.0f;
    mais ce vecteur ne s'affiche pas. Je suis certein que la faute est dans le code du vecteur ou de la projection .

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 71
    Points : 78
    Points
    78
    Par défaut
    essaie de :
    - décaler tes vecteurs dans la direction z+ (en mettant z = 5 par exemple)
    - d'initialiser tes matrices de vue (caméra) et de monde à l'identité.
    je mettrait par exemple :
    D3DXMatrixIdentity(&matView);
    D3DXMatrixTranslation(&matWorld, 0.0f, 0.0f, 99.0f);
    D3DXMatrixOrtho...[/list]

  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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pour z = 0, ça marche très bien.
    Pour les matrices World et View, il faut les laisser à l'identité (mais ne pas oublier de le faire !).
    Sinon ben regarde du coté du mode de culling, souvent quand quelque chose ne s'affiche pas c'est ça

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    arf arf arf j'ai mis le world et le view a l'identity mais cela n'affiche toujours rien. C'est soit un probleme de projection ou de view ou soit un probleme d'initialisation du vertex.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    ok le probleme est resolu c'etait un probleme de culling

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    J'ai encore un little probleme lorsque j'affiche la texture elle apparait a l'envers comment initialiser le vertex (ou la texture) pour que la texture apparaisse a l'endroit et non en miroir

  9. #9
    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 : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    En fait toi tu voulais les y du haut vers le bas, mais là tu as l'inverse il me semble. C'est pour ça que l'ordre de tes vertices était inversé, et que tes coordonnées de texture V le sont également.

    Pour régler ton problème change simplement les tv.
    0.0f -> 1.0f et 1.0f -> 0.0f

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    ok merci maintenant c'est parfait

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/01/2005, 08h20
  2. Réflection - projected texture
    Par Dranor dans le forum DirectX
    Réponses: 2
    Dernier message: 29/05/2004, 13h35
  3. Clipping et projection orthogonale
    Par Luke-77 dans le forum DirectX
    Réponses: 4
    Dernier message: 01/10/2003, 20h02
  4. Project References: qu'est-ce?
    Par Glob dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 14/08/2003, 14h01

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