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 :

Les matrices


Sujet :

DirectX

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Les matrices
    Ben en faite je suis sur la creation d'un rpg 2d(c'est surtout pour bien connaitre directX9) et j'utilise des vecteurs RHW et je voudrai savoir s'il est possible d'utiliser les matrices avec pour les transformation car je n'y arive pas!!

    et sinon commen je fait pour dessiner des VB ou sprites sans utiliser les coordonée polaire ca menbète en faite puiske je suis en 2d! voila merci

  2. #2
    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 : 39
    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
    Ben en faite je suis sur la creation d'un rpg 2d(c'est surtout pour bien connaitre directX9) et j'utilise des vecteurs RHW et je voudrai savoir s'il est possible d'utiliser les matrices avec pour les transformation car je n'y arive pas!
    Non : si tu utilises des sommets pré-transformés (RHW) il ne passeront justement pas par la case "transformation" du pipeline, et ne seront donc pas affectés par tes matrices. Du coup peut-être devrais-tu t'orienter vers la seconde façon de faire de la 2D : utiliser des vertices non transformés, mais avec une matrice de projection ortho.

    et sinon commen je fait pour dessiner des VB ou sprites sans utiliser les coordonée polaire ca menbète en faite puiske je suis en 2d! voila merci
    J'ai du mal à voir à quel moment tu peux manipuler des coordonnées polaires

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    ben en faite pour le RHW j'avais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	struct VERTEX
    	{
    	    D3DXVECTOR4 p;       // vertex position
    		DWORD		color;
    		FLOAT tu, tv;
    	};
    #define D3DFVF_VERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    et sinon j'avais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct VERTEX
    	{
    	    D3DXVECTOR3 p;       // vertex position
    		DWORD		color;
    		FLOAT tu, tv;
    	};
    #define D3DFVF_VERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    sinon si tu pouvais me dire commmen utiliser la 2d sous direct 3d sans passer par le rhw (par la matrice de projection ortho) ben meci pour ta reponse!!


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  4. #4
    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 : 39
    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
    Citation Envoyé par Mathieu008_67
    ben en faite pour le RHW j'avais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	struct VERTEX
    	{
    	    D3DXVECTOR4 p;       // vertex position
    		DWORD		color;
    		FLOAT tu, tv;
    	};
    #define D3DFVF_VERTEX (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    et sinon j'avais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct VERTEX
    	{
    	    D3DXVECTOR3 p;       // vertex position
    		DWORD		color;
    		FLOAT tu, tv;
    	};
    #define D3DFVF_VERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    Ca j'avais bien compris Ca ne répond pas à ma question : que viennent faire les coordonnées polaires là-dedans ? (à moins que tu fasses une grosse confusion sur le vocabulaire ?)

    Citation Envoyé par Mathieu008_67
    sinon si tu pouvais me dire commmen utiliser la 2d sous direct 3d sans passer par le rhw (par la matrice de projection ortho) ben meci pour ta reponse!!
    http://www.gamedev.net/reference/articles/article1434.asp

    En gros, ce qu'il faut retenir c'est l'initialisation des matrices de transformation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void PostInitialize(float WindowWidth, float WindowHeight)
    {
    	D3DXMATRIX Ortho2D;	
    	D3DXMATRIX Identity;
     
    	D3DXMatrixOrthoLH(&Ortho2D, WindowWidth, WindowHeight, 0.0f, 1.0f);
    	D3DXMatrixIdentity(&Identity);
     
    	g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &Ortho2D);
    	g_pd3dDevice->SetTransform(D3DTS_WORLD, &Identity);
    	g_pd3dDevice->SetTransform(D3DTS_VIEW, &Identity);
    }
    Et il suffit ensuite d'utiliser des coordonnées 2D pour rendre tes triangles.

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    MARCHIII

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Je ne sait pas pourkoi mais ca ne marche pas!!

  7. #7
    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 : 39
    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
    Ben là si tu veux qu'on t'aide il va falloir nous en dire plus...

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    ben en faite tout ce ki ce passe c'est que ma page directx est ouverte mais rien n'est affiché dessu!!
    sinon les transformation des matrices je dois les metres dans le rendu??

  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 : 39
    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
    Le mieux serait peut-être que tu nous montres un peu de code ? Ou au moins que tu localises un peu mieux l'erreur, parce que là... On n'est pas devins

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Dans mon cadre.cpp

    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
    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
    bool CCadre::Initiation(LPDIRECT3DDEVICE9 pd3dDevice)
    {
     
    float PanelWidth = 50.0f;
    float PanelHeight = 100.0f;
     
     
    if ( FAILED( pd3dDevice->CreateVertexBuffer ( 4 * sizeof ( VERTEX2D ),
                   D3DUSAGE_WRITEONLY, D3DFVF_VERTEX2D,
                   D3DPOOL_MANAGED, & m_pVb , NULL ) ) )
    	{
    	   return false;
    	} ; 
    VERTEX2D* pVertices = NULL;
    m_pVb->Lock( 0, 0, ( void * * ) &pVertices,0);
    //m_pVb->Lock( 0, 0, ( void * * ) & v, 0 );
     
    //Set all the colors to white
    pVertices[0].color = pVertices[1].color = pVertices[2].color = pVertices[3].color = 0xffffffff;
     
    //Set positions and texture coordinates
    pVertices[0].x = pVertices[3].x = -PanelWidth / 2.0f;
    pVertices[1].x = pVertices[2].x = PanelWidth / 2.0f;
     
    pVertices[0].y = pVertices[1].y = PanelHeight / 2.0f;
    pVertices[2].y = pVertices[3].y = -PanelHeight / 2.0f;
     
    pVertices[0].z = pVertices[1].z = pVertices[2].z = pVertices[3].z = 1.0f;
     
    //pVertices[0].rhw = pVertices[1].rhw = pVertices[2].rhw = pVertices[3].rhw = 1.0f;
     
    pVertices[1].u = pVertices[2].u = 1.0f;
    pVertices[0].u = pVertices[3].u = 0.0f;
     
    pVertices[0].v = pVertices[1].v = 0.0f;
    pVertices[2].v = pVertices[3].v = 1.0f;
     
    m_pVb->Unlock();
     
     
    	return true;
    }
     
    bool CCadre::Rendu(LPDIRECT3DDEVICE9 pd3dDevice)
    {/*
    	pd3dDevice->SetRenderState( D3DRS_CULLMODE,  D3DCULL_CW );
    	pd3dDevice->SetFVF ( D3DFVF_VERTEX2D );
     
    //	pd3dDevice->SetVertexShader(D3DFVF_VERTEX2D);
    	pd3dDevice->SetStreamSource(0, m_pVb,0, sizeof(VERTEX2D));
    	pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2);
    */
    	//	pd3dDevice->SetTexture ( 0, m_pTexture ) ;
     
    	D3DXMATRIX Ortho2D;	
    	D3DXMATRIX Identity;
     
    	D3DXMatrixOrthoLH(&Ortho2D, 800, 600, 0.0f, 1.0f);
    	D3DXMatrixIdentity(&Identity);
     
    	pd3dDevice->SetTransform(D3DTS_PROJECTION, &Ortho2D);
    	pd3dDevice->SetTransform(D3DTS_WORLD, &Identity);
    	pd3dDevice->SetTransform(D3DTS_VIEW, &Identity);
     
    	pd3dDevice->SetRenderState( D3DRS_CULLMODE,  D3DCULL_CW );
    	pd3dDevice->SetFVF ( D3DFVF_VERTEX2D );
    	pd3dDevice->SetStreamSource( 0, m_pVb, 0 , sizeof ( VERTEX2D ) );
    	pd3dDevice->DrawPrimitive( D3DPT_TRIANGLEFAN , 0 , 2);
     
    	return 1;
    }
    Cadre.h


    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
    class CCadre  
    {
    public:
    	bool Desactivation(LPDIRECT3DDEVICE9 pd3dDevice);
    	bool Rendu(LPDIRECT3DDEVICE9 pd3dDevice);
    //	D3DXIMAGE_INFO srcInfo;							// Infos sur l'image chargée sur la texture
    	LPDIRECT3DVERTEXBUFFER9 m_pVb;
     
    	bool Initiation(LPDIRECT3DDEVICE9 pd3dDevice);
    	CCadre();
    	virtual ~CCadre();
     
     
    	struct VERTEX2D{FLOAT x, y, z ;	DWORD color;	FLOAT u, v;};
    	#define D3DFVF_VERTEX2D (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
    };

    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  11. #11
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    EN faite je voudrai aussi savoir si il est possible de creer une seul foi un vertexbuffer avec texture et tt! puis de l'utiliser une seul foi par exemple pour l'affichage de fenetre

    ou sinon de l'utiliser une seul foi pour faire du texte reutiliser le même vb plusieur foi dans le même rendu
    Merci d'avance!!

  12. #12
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    En faite mon vrai pborblème c'est que je ne veut pas utiliser pour dessiner les 1.0f ou 0.0f mais la position dans la fenetre;

    ex de ce que je veut pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        pVertices[0].position = D3DXVECTOR3( -1.0f, -1.0f,  0.0f );
        pVertices[0].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
        pVertices[1].position = D3DXVECTOR3(  0.0f,  1.0f,  0.0f );
        pVertices[1].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
        pVertices[2].position = D3DXVECTOR3(  1.0f, -1.0f,  0.0f );
        pVertices[2].normal   = D3DXVECTOR3(  0.0f,  0.0f, -1.0f );
    ex de ce que je veut mais présenté otrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        CUSTOMVERTEX vertices[] =
        {
            { 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
            { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
            {  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
        };
    mais sans le rhw pour pouvoir utiliser les matrices pour les trasformation;

    sinon j'ai essayer d'utiliser D3DXCreateSprite mais il ne peut faire tout cedon j'ai besoin;

  13. #13
    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 : 39
    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
    Ca fait 3 fois que je te marque ceci

    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]
    Merci d'y penser...

    ex de ce que je veut mais présenté otrement:
    CUSTOMVERTEX vertices[] =
    {
    { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
    { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };
    mais sans le rhw pour pouvoir utiliser les matrices pour les trasformation;
    Oui c'est ce que tu peux faire lorsque tu utilises une matrice de projection ortho. D'ailleurs, ayant regardé vite fait ton code plus haut, je n'ai vu aucune erreur flagrante. Tu as essayé le debug runtime ?

  14. #14
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Dsl pour les balises de code!!

    ben en faite je ne sait pas comment faire le le debug runtime!

    et en commencent un projet avec le SDK de directX9 et ben en fait ca fonctionne mais pourquoi?? je ne sait pas!!

    par contre en commencant le projet a partir d'un win32application ca ne fonctionne pas!! est-ce que je doi pluto utiliser le SDK??
    j'aimerai bien comprendre en faite!!

    et si j'ai bien compris: x= 0 y=0 c'est le centre de la fenètre!! le coin inferieur droit = la taille de la fenetre / 2!!!

    j'ai du mal avec game dev car je sui snull en anglais

  15. #15
    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 : 39
    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
    par contre en commencant le projet a partir d'un win32application ca ne fonctionne pas!! est-ce que je doi pluto utiliser le SDK??
    Tout à fait
    C'est en effet plus que conseillé.

  16. #16
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Ok merci! c ce que je vais faire!!

    Mais sinon est-ce que tu pourai m'expliquer pourkoi ca ne fonctionne qu'avec le SDK ?? j'aimerai bien savoir!!

    Est-ce que tu pourai aussi m'expliquer commen fair pour creer un VB une foi et l'utiliser plusieur foi dans le même rendu!! genre pour faire du texte ou quelquechose comme ca!
    merci d'avance!!

  17. #17
    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 : 39
    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
    Mais sinon est-ce que tu pourai m'expliquer pourkoi ca ne fonctionne qu'avec le SDK ?? j'aimerai bien savoir!!
    Parce que tu as une erreur dans ton code. Par contre désolé, je n'ai pas réussi à la déceler sur le bout de code que tu nous as donné. Le mieux est encore que tu le compares à celui des samples du SDK, tu trouveras ce que tu as mal fait.

    Est-ce que tu pourai aussi m'expliquer commen fair pour creer un VB une foi et l'utiliser plusieur foi dans le même rendu!! genre pour faire du texte ou quelquechose comme ca!
    Je ne suis pas sûr de bien comprendre ta question. Pour utiliser plusieurs un même VB il n'y a rien de spécial à faire.

  18. #18
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    ok merci!! pour ton aide!!

Discussions similaires

  1. Les matrices
    Par countag dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 12/05/2006, 23h25
  2. Les matrices
    Par countag dans le forum C++
    Réponses: 6
    Dernier message: 12/05/2006, 20h41
  3. STL et les matrices...
    Par Rodrigue dans le forum SL & STL
    Réponses: 21
    Dernier message: 08/05/2006, 20h22
  4. Comprendre les matrices 3D
    Par tavman dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 11/09/2005, 13h18
  5. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10

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