Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4487 connectés 

 


Dernière réponse
Sujet : [DirectX] Problème avec la fonction DrawText
youdontcare on ne peut effectivement mettre qu'une lettre dans un char.  
as tu bien saisi les pointeurs ? un pointeur n'est qu'une adresse mémoire et peut donc pointer vers un objet ou plusieurs.  
 
ex :  
char myChar = 'A';
char* myCharPtr  = &myChar; // myCharPtr pointe vers myChar
 
char myString = "Bonjour";
char* myStringPtr = &myString[0]; // myStringPtr pointe vers le premier caractère de myString
équivalent à :
char* myStringPtr = myString; // pointe par défaut vers le première caractère.
 
à partir de la, myStringPtr[n] = nième charactère de la string. on peut incrémenter n jusqu'à la fin de la string, notée par un 0 (null).
 
donc là si tu veux afficher tes fps il faut passer un pointeur vers une string qui contient le nombre de fps. tu peux faire ça avec itoa() ou sprintf(), ce dernier étant plus flexible.
 
donc
 
char s[512]; // taille au pif suffisante
sprintf(s, "FPS : %d", totalfps);
lpFont->DrawText(s, ...)
ou  
lpFont->DrawText(&s[0], ...)
les deux étant équivalents.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
youdontcare on ne peut effectivement mettre qu'une lettre dans un char.  
as tu bien saisi les pointeurs ? un pointeur n'est qu'une adresse mémoire et peut donc pointer vers un objet ou plusieurs.  
 
ex :  
char myChar = 'A';
char* myCharPtr  = &myChar; // myCharPtr pointe vers myChar
 
char myString = "Bonjour";
char* myStringPtr = &myString[0]; // myStringPtr pointe vers le premier caractère de myString
équivalent à :
char* myStringPtr = myString; // pointe par défaut vers le première caractère.
 
à partir de la, myStringPtr[n] = nième charactère de la string. on peut incrémenter n jusqu'à la fin de la string, notée par un 0 (null).
 
donc là si tu veux afficher tes fps il faut passer un pointeur vers une string qui contient le nombre de fps. tu peux faire ça avec itoa() ou sprintf(), ce dernier étant plus flexible.
 
donc
 
char s[512]; // taille au pif suffisante
sprintf(s, "FPS : %d", totalfps);
lpFont->DrawText(s, ...)
ou  
lpFont->DrawText(&s[0], ...)
les deux étant équivalents.
Alload Un truc que je pige pas, c'est que la fonction DrawTextA demande un pointeur vers une variable const char. Mais comment on peut mettre une phrase dans une const char?
 
Si j'ai bien compris, on ne peut placer qu'une lettre dans un char, donc comment y mettre une phrase?
youdontcare une fonction d'affichage prend quasiment toujours une string en paramètre, comme ici :
 
INT DrawTextW(
  LPCWSTR pString,
  INT Count,
  LPRECT pRect,
  DWORD Format,
  D3DCOLOR Color
);  
 
ici, le paramètre est en effet un unsigned short car cette fonction affiche une string unicode. comme tu n'en as pas besoin pour afficher tes fps, utilises drawtexta() et passe une string issue, par ex, d'un sprintf().
verdoux

Alload a écrit a écrit :

totalfps est de type unsigned short comme le demande la fonction DrawTextW




T'en es sûr ?

Alload totalfps est de type unsigned short comme le demande la fonction DrawTextW, et puis je ne met que des nombres dans cette variable, donc je vois pas pourquoi ça affiche n'importe quoi.
verdoux totalfps n'est pas une chaine de caractères.
Alload Voilà ce que me montrer mon programme:
 
http://www.multimania.com/final6/fps.jpg  
 
Alors que j'aimerais qu'il me montre les FPS.
Alload Je voudrais afficher le framerate de mon application, pour cela j'utilise l'interface D3DXFont, j'ai tout initialisé: la font, l'object correspond, etc...
 
Mais quand je lance mon appli, le compteur des FPS affiche n'importe quoi, voilà comment je l'utilise, si quelqu'un pouvait me trouver l'erreur que je fais:
 
 
//Les variables globales
int last = 0;
int current = 0;
unsigned short fps = 0;
unsigned short totalfps = 0;
 
 
//Ce qui se trouve dans la fonction elle même
RECT rect;
rect.left = 10; rect.right = 70;
rect.top = 10; rect.bottom = 50;
 
current = GetTickCount();
 
if (current - last > 1000)
{
totalfps = fps;
fps = 0;
last = GetTickCount();
}
 
else
fps++;
 
lpFont->DrawTextW(&totalfps, -1, &rect, DT_CENTER | DT_VCENTER, D3DCOLOR_XRGB(255, 255, 255));

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)