[directX] Prb avec CreateDevice

Signaler
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
Rebonjour je suis toujours en train de galerer avec directX pour les
memes raisons : ca marche nickel chez moi mais pas chez tout le monde.
J'ai tout refait de maniere a tester si les initialisations se font
bien mais je bloque toujours sur des trucs de base.


    HRESULT test = Objet_D3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd,

           
           
           
    D3DCREATE_HARDWARE_VERTEXPROCESSING,

           
           
           
    &d3dpp, &D3D_Device );


En fait avant ca ne marchait pas du tout sur mon portable, j'ai vu sur
un forum qu'on proposait de remplacer D3DDEVTYPE_HAL par D3DDEVTYPE_REF
je me suis retrouvé avec un ecran noir mais plus d'erreur, puis j'ai
tout refait en directx 9 (j'etais a la v8) et maintenant seul
D3DDEVTYPE_HAL marche.

Le portable ayant une carte pourrie j'ai vite trouvé le probleme il m'a
suffit de remplacer D3DCREATE_HARDWARE_VERTEXPROCESSING par
D3DCREATE_SOFTWARE_VERTEXPROCESSING. Ca marche mais mes textures sont
diminué de 20/100 en taille et elles sont répétées pour combler les
vides, et ca deconne aussi pour afficher les textes. Quelqu'un aurait
une piste ?


Sinon ya t 'il un moyen de savoir si la carte supporte le hardware pour
les vertex (autre que de faire tout les tests avec tout les modes en
mode decroissant) , j'ai rien trouvé du coté de D3DCAPS9 et il faut
jouer les pisteurs pour trouver les fonctions interessante sur les
tutos livrés avec la SDK.

3 réponses

Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008

Ne t'emmerdes pas, fais des copier-coller de parties des exemples du SDK de DX9.

D3DDEVTYPE_HAL: hardware, un maximum d'opération est effectué par la carte graphique
D3DDEVTYPE_REF: emulation en software, le cpu fait tout

D3DCREATE_SOFTWARE_VERTEXPROCESSING: le CPU fait les transformations sur les vertex
D3DCREATE_HARDWARE_VERTEXPROCESSING: c'est le GPU (le proc de la carte graphique), il doit pouvoir le faire sinon => NULL

Après pour les textures, il vaut mieux que ses dimensions soient des puissances de 2. C'est plus rapide de faire des calculs d'interpolation [0,1]->[0,2^n] pour un processeur qui travaille en binaire.
Donc DirectX peut t'étirer ton image, ou bien mettre du noir autour de façon à ce qu'elle tienne sur la texture dont les dimensions sont des puissances de 2.
Perso, sur mon PC portable, DX accepte de m'allouer de la memoire vidéo de tailles différentes des puissances de 2 à partir de la version 9.0c du SDK avril 2006.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Je crois que je vais faire ca, passer ma journée a pomper des bouts de
la sdk mais je vais essayer de simplifier quand meme car je trouve que
ca fait usine a gaz.


Sinon le prb ne viens pas des textures car ca deconne aussi pour
afficher un texte. Avec les textes decoupés de la meme maniere que les
textures.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Pour les textures le probleme peut venir de la, vu que la coupure
apparait pile au coordonnées 256,256 mais pour les textes je galere
toujours autant, au lieu de m'afficher "Inconnu" ca m'affiche
"Incococococo"


void EcritTexte(char* strText,LPD3DXFONT pD3DXFont,RECT rct,D3DCOLOR D3Dc) {

    pD3DXFont->DrawText (strText, -1, &rct, DT_LEFT | DT_WORDBREAK , D3Dc);

}


LPD3DXFONT MakeFont3D(int Height,int Weight) {


    LPD3DXFONT pD3DXFont = NULL;


    if( NULL == D3D_Device )

        return NULL;


    LOGFONT lf;

    ZeroMemory (&lf, sizeof(LOGFONT));

    lf.lfHeight = Height;

    lf.lfWeight = Weight;

   

    if (FAILED (D3DXCreateFontIndirect(D3D_Device, &lf, &pD3DXFont)))

        return NULL;


    return pD3DXFont;

}