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 :

[DIRECT3D][C++] centrer un sprite


Sujet :

DirectX

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 45
    Par défaut [DIRECT3D][C++] centrer un sprite
    salut,

    Je cherche à afficher un sprite en permanence au centre de l'ecran (un viseur en fait). La question a déjà été posée sur le forum mais les liens donnés ne fonctionnent plus.

    En fait j'utilise un quad texturé comme suit :

    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
    struct _SVERTEX{
     
       D3DXVECTOR3 p ;
       DWORD color;
     
    };
     
    _SVERTEX *v;
    ...
    v[0].p = D3DXVECTOR3( 1.0f, 1.0f, 1.0f );
    v[0].color = this->m_dwColor; 
    v[1].p = D3DXVECTOR3( 1.0f, -1.0f, 1.0f ); 
    v[1].color = this->m_dwColor; 
    v[2].p = D3DXVECTOR3( -1.0f, -1.0f, 1.0f ); 
    v[2].color = this->m_dwColor; 
    v[3].p = D3DXVECTOR3( -1.0f, 1.0f, 1.0f ); 
    v[3].color = this->m_dwColor; 
    ...
    et pour le rendu :

    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
    D3DXMATRIX matWorld;
    D3DXMatrixIdentity( & matWorld );
     
    pd3dDevice->SetTransform( D3DTS_VIEW, & matWorld );
    pd3dDevice->SetTransform( D3DTS_WORLD, & matWorld );
     
    pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
    pd3dDevice->SetRenderState( D3DRS_LIGHTING,  FALSE );
    pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );
    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
     
    pd3dDevice->SetTexture( 0, this->m_pTexture );
    pd3dDevice->SetStreamSource( 0, this->m_pVB, 0 , sizeof ( _SVERTEX ) );
    pd3dDevice->SetFVF( D3DFVF_XYZ | D3DFVF_DIFFUSE );
    pd3dDevice->DrawPrimitive( D3DPT_POINTLIST, 0, 4 );
     
    pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE );
    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
    pd3dDevice->SetRenderState( D3DRS_LIGHTING,  TRUE );
    En fait rien ne s'affiche. Je ne suis pas certain qu'initialiser la matrice du monde et la matrice de vue avec la matrice identité soit la bonne méthode pour centrer un sprite. D'ou vient le problème?

    Merci pour votre aide

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 45
    Par défaut
    personne ne sait centrer un sprite?

  3. #3
    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
    Il faut passer en rendu 2D, càd en matrice de projection ortho.

    Tu peux aussi utiliser des coordonnées XYZRHW et travailler directement en coordonnées écran, en ignorant les matrices de transformation.

    http://jeux.developpez.com/faq/direc...CS_TEXTURES_2d

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 45
    Par défaut
    merci beaucoup, ca parait tres clair, je vais tester ça.

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

Discussions similaires

  1. [CR9] Centrer verticalement le texte
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 22/05/2009, 19h33
  2. Thread et affichage direct3D plein écran
    Par Harry_polin dans le forum DirectX
    Réponses: 8
    Dernier message: 13/03/2003, 22h22
  3. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 22h18
  4. Centrer un texte dans un string Grid
    Par christine dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/10/2002, 22h33
  5. Réponses: 5
    Dernier message: 06/08/2002, 20h08

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