|
You last visited: Today at 15:26
Advertisement
D3D9 Text zeichnen...
Discussion on D3D9 Text zeichnen... within the C/C++ forum part of the Coders Den category.
04/06/2014, 18:22
|
#1
|
elite*gold: 237
Join Date: May 2013
Posts: 336
Received Thanks: 89
|
D3D9 Text zeichnen...
Hi,
Code:
void DrawFontA (int X, int Y, D3DCOLOR Color, char *format, ...)
{
char buffer[2048];
RECT FontRect = { X, Y, X + 120, Y + 16 };
pFont->DrawTextA( NULL, buffer, -1, &FontRect, DT_NOCLIP , Color );
}
HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
/*D3DRECT bg1 = {10, 10, 200, 500};
pDevice->Clear(1, &bg1, D3DCLEAR_TARGET, txtBlack, 0, 0);
D3DRECT bg2 = {15, 15, 195, 495};
pDevice->Clear(1, &bg2, D3DCLEAR_TARGET, txtRed, 0, 0);
D3DRECT rbg3 = {20, 20, 190, 490};
pDevice->Clear(1, &bg3, D3DCLEAR_TARGET, txtBlack, 0, 0);
*/
D3DXCreateFontA(pDevice, 14, 0, FW_NORMAL, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &pFont );
DrawFontA(300,50,txtRed,"Ein Text.");
return pEndScene(pDevice);
}
Habe mich mal an ein Tutorial mit ein paar weiteren Seiten parallel gesetzt und bin jetzt dabei, auf D3D9 Basis ein paar Sachen zu zeichnen.
Wie oben schon auskommentiert zu sehen ist, habe ich neben dem (nicht funktionierenden) Text auch drei Rechtecke drinnen, die allerdings funktionieren. Nur der Text nicht.
ID3DXFont ist bereits als pFont deklariert und Fehler werden ebenfalls keine angegeben.
Positionen sind ja auch richtig angegeben, ich vermute mal einen programmiertechnischen Fehler, wobei ich auf Google dazu auch nichts weiter gefunden habe, wäre daher dankbar um Hilfe
|
|
|
04/06/2014, 18:27
|
#2
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Wie soll denn bitte in dem buffer in DrawFontA magischer Weise der Text aus dem Argument format kopiert werden ? buffer[2048] ist immer leer.
|
|
|
04/06/2014, 18:28
|
#3
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
jeden frame den font neu zu erstellen und nicht zu releasen wird auf jedenfall ne tolle sache sein, außerdem solltest du den buffer in drawfonta vllt auch i-wie füllen, das rect kann man sich korrekt ausrechnen anstatt der schwachsinnigen hardcoded values, etc...
bitte erst die sprache lernen und paar sachen selbst programmieren anstatt sowas zu copypasten.
|
|
|
04/07/2014, 16:54
|
#4
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Nana, zum Lernen sind hardcoded Werte doch erstmal völlig ok.
Was dir fehlt ist ein sprintf_s Aufruf, der den Inhalt von format in den Buffer kopiert.
Ich rate dir btw zu std::string.
Und wie der freundliche Herr über mir schon sagte: Font nur dann erstellen, wenn es nötig ist; im Optimalfall ein einziges Mal.
|
|
|
04/21/2014, 22:38
|
#5
|
elite*gold: 18
Join Date: Aug 2010
Posts: 1,840
Received Thanks: 353
|
Ist eigentlich einfach einen D3D9 Text zu erstellen.
Als erstes musst du die Font erstellen. Dies ist meine Funktion dazu:
Code:
void MAIN::CreateFont (LPDIRECT3DDEVICE9 pDevice)
{
bool bFont = false;
if(pFont)
{
pFont->Release();
pFont = false;
bFont = false;
}
if(!bFont)
{
D3DXCreateFontA(pDevice, 14, 6, FW_BOLD, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &pFont);
bFont = true;
}
}
und den Text dann:
Code:
void MENU::lWriteText (int x, int y, D3DCOLOR Color, char *Text)
{
RECT rect;
SetRect(&rect,x,y,x,y);
pFont->DrawTextA(0, Text, -1, &rect, DT_NOCLIP | DT_LEFT, Color);
}
Bei fragen kannst du mich gerne PNen^^
|
|
|
04/22/2014, 01:09
|
#6
|
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
|
D3DX ist deprecated und ich würde euch auch sonst abraten das zu verwenden. Vorallem die ID3DXFont hat so einige böse macken (hatte ich früher auch kurz verwendet). Nimm lieber freetype oder GDI+ und rendere dann deinen Text in ne Glyphmap. Dann kannst du z.B. über nen Shader den gewünschten Text zeichnen. Das wäre super effizient und flexibel. Wird auch so in der Regel von allen guten Programmen so gemacht.
Zusätzlicher Vorteil wäre, dass das dann unabhängig vom verwendeten Renderer ist (ab DirectX 11 musst du das eh so machen).
|
|
|
04/22/2014, 02:40
|
#7
|
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
|
Denke aber mal das er einen D3D-Hook machen möchte.
|
|
|
04/22/2014, 15:54
|
#8
|
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
|
Quote:
Originally Posted by Tension
Denke aber mal das er einen D3D-Hook machen möchte.
|
Was hat das damit zu tun? Er möchte Text zeichnen.
|
|
|
Similar Threads
|
[D3D9 Bases] Sprited D3D9 Base with many functions
02/20/2012 - WarRock Hacks, Bots, Cheats & Exploits - 1 Replies
Hey,
I found a site where a free D3D Base is and it has much functions..
and if you have a question, they help you with teamviewer! ♥
and if wr-cheats is down, you can download the newest sirosix public there.
Venom Hacks - Unreal Portal
|
All times are GMT +1. The time now is 15:27.
|
|