OldSchoolHack

Register / Login English

Text zeichnen (DX9)

icon Thread: Text zeichnen (DX9)

Join Date: Apr 2014

Posts: 3

User-Rating:

0 positive
1 negative
TEXT Code:
  1. void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color)
  2. {
  3. D3DRECT rect = {X, Y, X+L, Y+H};
  4. Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0);
  5. }
  6.  
  7. void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...)
  8. {
  9. char buffer[256];
  10. va_list args;
  11. va_start (args, format);
  12. vsprintf (buffer,"Test", args);
  13. RECT FontRect = { X, Y, X + 120, Y + 16 };
  14. pFont->DrawText( NULL, (LPCWSTR)buffer, -1, &FontRect, DT_NOCLIP , Color );
  15. va_end (args);
  16. }
  17.  
  18.  
  19.  
  20. HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)
  21. {
  22. DrawRect (pDevice, 10, 10, 200, 200, txtRed);
  23.  
  24. D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
  25. ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Arial", &pFont);
  26.  
  27.  
  28. DrawFont(300, 50, txtRed, "Test");
  29.  
  30.  
  31. return pEndScene(pDevice);
  32. }

D3DXCreateFont könnte ich mit einer if-Schleife ja notfalls nur einmal abrufen.

Allerdings wird nur das rote Rechteck gezeichnet und dann hängt sich das D3D9-Testfenster auf.
Dann eine Frage zu der va_list:
Müssen zwingend optionale Argumente angegeben werden?
Das Format bzw. mein Text steht da ja jetzt drinnen also sollte buffer gefüllt sein...

0 positive
1 negative
This post has been rated by:
capo1337 (Sun 20. Apr 2014, 00:50)