begin process at 2012 05 29 16:08:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Driver

 > 

plantage avec DrawText (LPD3DXFONT)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

plantage avec DrawText (LPD3DXFONT)

mercredi 24 mai 2006 à 20:37:43 | plantage avec DrawText (LPD3DXFONT)

loicus

Bonjours.... j'ai un gros gros problème.....

j'ai fait une petite classe, pour encapsuler tout ce qui est en rapport avec le texte... ;)
mon programme marche très bien en mode fenetré... en revanche, il plante très rapidement en mode fullscreen...  et je ne vois vraiment pas pourquoi... si quelqu'un pouvait m'éclairer ca serait très gentil!

le header :
struct Font_Adaptateur {std::vector<LPD3DXFONT> Font;};

class D3D_font 
{
public:
 D3D_font(D3D_object* d3d_object);
 virtual ~D3D_font();
    
 HRESULT  D3D_font:: Create_Font  (UINT Height, UINT* Font_i);    
    D3D_font:: DrawText  (UINT Adaptateur_i,UINT Font_i,char* texte);

 D3D_object* DX;

 Font_Adaptateur* Font_Ecran;
 std::vector<LPD3DXFONT>::iterator Font_it;

 RECT  screen_rect;
};

le cpp:

D3D_font::D3D_font(D3D_object* d3d_object)
{
 DX  = d3d_object;

 Font_Ecran = new Font_Adaptateur[DX->Adaptateur_Count];

 screen_rect.left = 0;
 screen_rect.top  = 0;
 screen_rect.right = DX->Width;
 screen_rect.bottom = DX->Height; 
}

D3D_font::~D3D_font()

 if(Font_Ecran!=NULL) delete [] Font_Ecran;
}


HRESULT D3D_font::Create_Font(UINT Height, UINT* Font_i)

 
 for(UINT Adaptateur_i = 0 ; Adaptateur_i < DX->Adaptateur_Count ; Adaptateur_i++)
 {  

  HFONT Tempory_HFont = CreateFont( Height, 0, 0, 0, FW_BOLD, FALSE,
           FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
           CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
           VARIABLE_PITCH, "Arial" );

  if( Tempory_HFont == NULL ) return E_FAIL;

  LPD3DXFONT Tempory_Font;

  if( FAILED( D3DXCreateFont( DX->Device[Adaptateur_i], Tempory_HFont, &Tempory_Font))) return E_FAIL;
  if(Tempory_Font == NULL){ return E_FAIL;  }

  Font_Ecran[Adaptateur_i].Font.push_back(Tempory_Font);  
  *Font_i = Font_Ecran[Adaptateur_i].Font.size() - 1;
 }

 return S_OK;

}

D3D_font::DrawText(UINT Adaptateur_i,UINT Font_i,char* texte)

 if(Font_Ecran!=NULL){
  if(Font_Ecran[Adaptateur_i].Font[Font_i]!=NULL)
  {
   if( SUCCEEDED( Font_Ecran[Adaptateur_i].Font[Font_i]->Begin() ) )
   { 
    Font_Ecran[Adaptateur_i].Font[Font_i]->DrawText(texte,-1,&screen_rect,DT_CENTER | DT_BOTTOM, D3DCOLOR_XRGB(0,0,255));
    Font_Ecran[Adaptateur_i].Font[Font_i]->End();  
   }
  }
 }

l'appel dans le programme :
VOID Render()
{  
 for(UINT Adaptateur_i = 0; Adaptateur_i < DX->Adaptateur_Count; Adaptateur_i++)
 {
  if(DX->Device[Adaptateur_i] != NULL)
  {
   DX->Device[Adaptateur_i]->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 ); 
   if( SUCCEEDED( DX->Device[Adaptateur_i]->BeginScene() ) )
   {
    DX->Device[Adaptateur_i]->SetStreamSource( 0, DX->VertexBuffer[Adaptateur_i], 0, sizeof(CUSTOMVERTEX) );
    DX->Device[Adaptateur_i]->SetFVF( D3DFVF_CUSTOMVERTEX );
    DX->Device[Adaptateur_i]->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );      

    DF->DrawText(Adaptateur_i,F0,"test");//Ca ne plante pas si je retire cette ligne!!!

    DX->Device[Adaptateur_i]->EndScene();
   } 
   DX->Device[Adaptateur_i]->Present( NULL, NULL, NULL, NULL );
  }
 }
}


je sais que c'est un peu dure de voir comme ca, ds un code partielle mais bon... y a peut être une raison fondamentalle qui va vous sauter au yeux...

encore merci d'avance

loic,

mercredi 24 mai 2006 à 23:36:12 | Re : plantage avec DrawText (LPD3DXFONT)

niketou

Peut etre un TCHAR au lieu d'un char*
jeudi 25 mai 2006 à 07:45:30 | Re : plantage avec DrawText (LPD3DXFONT)

loicus

non, ca n'as pas l'air d'être ca....
jeudi 25 mai 2006 à 14:40:24 | Re : plantage avec DrawText (LPD3DXFONT)

wxccxw

Membre Club
a tu regarder sur la FAQ Directx de c.developpez.com

http://jeux.developpez.com/faq/directx/


jeudi 25 mai 2006 à 15:56:26 | Re : plantage avec DrawText (LPD3DXFONT)

loicus

oui, mais ca ne m'aide pas....
vendredi 26 mai 2006 à 11:55:32 | Re : plantage avec DrawText (LPD3DXFONT)

Galmiza

Où-est ce que ça plante exactement ?

Parfois c'est la définition de la fenêtre Windows en plein écran qu'il faut revoir et pas le code DirectX.
Fait attention à ta déclaration de D3DPRESENT_PARAMETERS nécessaire pour créer LPDIRECT3DDEVICE9. C'est souvent en modifiant ces paramètres qu'on s'en sort.

vendredi 26 mai 2006 à 12:28:05 | Re : plantage avec DrawText (LPD3DXFONT)

loicus

bhen ce qui est très byzare c'est que si je n'apelle pas la fonction drawtext, ca ne plante pas... même en pleine écran  (sur un ou sur plusieur moniteur)

et dès que j'utilise
DF->DrawText(Adaptateur_i,F0,"test");

où même si j'utilise juste drawtexte sans passé par la classe... ca plante

c'est pour ca que je comprend pas trop....





Cette discussion est classée dans : ecran, font, dx, d3d, adaptateur


Répondre à ce message

Sujets en rapport avec ce message

Font d'ecran avec DEVC++ [ par guitoulefoux ] Bonjour,Je cherche a mettre un fond d'ecran dans ma form.J'ai vu que dans devc++ il y avait une menu pour incorporer la photo dans un fichier rc.MyRes Pb avec DrawText en Direct3D [ par Kalipo ] Hello,je debutes dans Direct3D et je passes donc par la phase d'ecriture de texte.Je developpe en C et j'ai le probleme suivant a ma creation de texte help : raffraichir l ecran? [ par g2fx ] bonjour , je code pour l instant de petit prog afin de me familiariser avec le c , et je cherche la commande equivalente a clrscr(); pour visual c++6. effacer ecran [ par asmv ] merci de me repondrecomment effacer l'ecran avec visual c++ mode consolesalut Taille ecran [ par gus2647 ] Bonjour,y a t il fonction qui me permet de connaitre en quelle definition d ecran je suis.J utilise VC++ 6 et les MFCMerci d avanceGus2647 appli ou video en fond d'ecran comme bsplayer [ par totomaze ] totomazeSalutj aurais voule savoir le code pouttre une application ou une video en fond d'ecran comme bsplayer (derriere les iconesmerci la souris avec glut [ par laptop ] JE voudrait que les mouvement de la souris sois coordonnéavec les mouvement de l'ecran c a dire qd on monte avec la souris l'ecran aussi comme dans l lire fichier, au secours je suis bloqué [ par khalidlyon ] Ensemble pour la scienceBonjour,J'espere que je vous dérange pas, mais je suis vraiment bloqué si vous pouvez m'aider.enfaite j'ai un fichier "donner. couleur de pixel (DX) [ par JediMaster ] comment peut t'on récupérer la couleur d'un pixel et la changer sur une surface directdraw ?ca m'aiderait trop merci Thread d'une class [ par xytron ] Bonjour je recherche le moyen de "threader" une classe, j'ai testé plusieurs trucs mais je dois pas avoir trouvé le bon alors si vous pouviez m'aider


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales