Hallo zusammen,
für ein Projekt von mir benutze ich die von DirectX bereitgestellte Textrender-Funktion (DrawText()). Nun habe ich das Problem, dass der von mir ausgegebene Text anfangs wunderbar funktioniert; wenn der Text allerdings länger wird, überschreibt das Ende des Textes den Anfang und es sieht ziemlich komisch aus.
Der Fehler kommt manchmal bei etwa 30 Zeichen, manchmal bei 60, allerdings kommt er schneller, wenn ich Zeilenumbrüche ("\n") einfüge.
Zum Rendern des Textes benutze ich folgenden Code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// Deklaration:
LPD3DXFONT g_pText;
// in der Initialisierungsfunktion
LOGFONT LogFont = {15, 0, 0, 0, FW_NORMAL, false, false, false, DEFAULT_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "Arial"}; // zum Füllen der Schriftartstruktur
D3DXCreateFontIndirect(g_pD3DDevice,&LogFont,&g_pText); // zum Erstellen der Schriftart
RECT FontOutPosition;
FontOutPosition.top = 10;
FontOutPosition.left = 10;
FontOutPosition.right = 790;
FontOutPosition.bottom = 590;
// jetzt in der Renderfunktion von mir:
g_pText->Begin();
if(FAILED(g_pText->DrawText("DIES IST DER TEXT",-1,&FontOutPosition,NULL,0xff000000)))
{
MessageBox(g_hWindow,"Textrendern failed!","Render()",MB_OK);
return 1;
}
g_pText->End();
// am Ende rufe ich noch g_pText->Release() und g_pText=NULL auf, aber das ist wohl eher irrelevant
|
Ich hoffe, jemand kann mir helfen.
Entweder sind die Systemressorcen sehr gering (aber bei fremden Programmen klappt's, weshalb ich dies ausschließe) oder ich habe einen Fehler eingebaut.
Oder könnt ihr, falls ihr anders Text darstellt (aber mit den DirectX-Funktionen) schreiben, wie ihr diesen Text darstellt?
Vielen Dank
unsigned int