DirectX - DrawText oraz zwalnianie po nim pamięci

0

Cześć miałbym do was pytanie :)
Zacząłem naukę DirectX9 i w sumie teraz bawię się w podpinanie dllek do aplikacji d3d. Mianowicie mam do was pytanko co mam jeszcze 'uwalniać'?

W endscene mam coś takiego:

 
D3DXCreateFont(pDevice, 16, 7, FW_BOLD, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, "Sans", &pD3DFont); 
pD3DFont->DrawTextA(NULL, "Tekst123", -1, &rct, 0,  D3DCOLOR_XRGB(255,122,15));
pD3DFont->Release();

wszystko fajnie i pięknie bo działa ale..
No właśnie ale zabiera mi to około 12% cpu (posiadam 2x3.0Ghz) dlatego też chciałbym wiedzieć gdzie tu jest jakaś 'dziura'.
Pozdrawiam :)

0

nie jestem obeznany ale wskazuje na to że masz wysoką częstotliwość odświeżania czy jak by to tam nazwać... jak byś podał całą funkcję było by lepiej
a z dokumentacji wynika że masz podać liczbę wyświetlanych znaków a nie -1 (3 parametr) inaczej ten string ma być zakończony 0x00
http://msdn.microsoft.com/en-us/library/windows/desktop/bb173962(v=vs.85).aspx

0

Też rozważałem tę opcje ale Sleep raczej tam nie mogę dać z racji takiej że opóźnię CHYBA działanie całego renderingu.

Kodzik mam taki:

 
HRESULT WINAPI nEndScene(LPDIRECT3DDEVICE9 pDevice)
{	
	_asm NOP;
	HRESULT hRet = pEndScene(pDevice);

     D3DXCreateFont(pDevice, 16, 7, FW_BOLD, 1, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, "Sans", &pD3DFont); 
     pD3DFont->DrawTextA(NULL, "Test123", -1, &rct, 0,  D3DCOLOR_XRGB(255,122,15));
     pD3DFont->Release();

   return hRet;
}
0

Dodam jeszcze tylko że tak jak mówiłeś zmieniłem z tego -1 co niby miało samo liczyć na ilość znaków to w ogóle stała się poezja. Zabierało 40%.

0

Po problemie panowie

 
void ReFont(LPDIRECT3DDEVICE9 pDevice)
{
    if (g_pDevice != pDevice)
    {
        g_pDevice = pDevice;
        try
        {
            if (pFont != 0)
                pFont->Release();
        } catch (...) {}
        pFont = 0;
        D3DXCreateFontA(pDevice, 14, 0, FW_BOLD, 0, 0, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, PROOF_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &pFont ); 
    }
}

Takie coś magiczne pomogło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1