[ deerbeer @ 09.03.2008. 11:40 ] @
Danima pokusavam da napravim ticker kontrolu (DirectX9 SDK ) tj . prozor u kome je skrolujuci text . Medjutim kada stavim veliki font (>48) ili kad je text preko 30 karaktera ili ucitan preko RSS-a DrawText metoda ID3DXFont klase jednostavno nedopustivo guta memoriju ... Probao sam da optimizujuem stvar tako sto joj prosledjujem manje fragmente tj. slogove i to je za nijansu bolje ... ID3DXFont jednostavno cache-ira bitmape odgovarajucih karaktera i ne uspe da u toku uzastopnih poziva (1ms) oslobodi resurse .. Da napomenem koristim jednu instancu ID3DXFont-a u svojoj render() metodi ,... Probao sam i da u svakom pozivu instanciram ID3DXFont i rezultati su drugaciji .. CPU je skoro zakucan a memorija je OK . A evo i jednog slicnog problema: http://forums.microsoft.com/MS...spx?PostID=227431&SiteID=1 Ima li neko ideju ? Code: void Render() { if( NULL == g_pd3dDevice ) return; g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,255), 1.0f, 0 ); if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { RECT rc ; SetRect( &rc, 0, 0, 0, 0 ); D3DXCOLOR clrText( 1.0f, 0.0f, 0.0f, 1.0f ) ; g_pTextSprite->Begin( D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_TEXTURE ); RECT rcClient ; GetClientRect(m_hWnd,&rcClient) ; if (g_pPosition.x + rcClient.right <= 0) g_pPosition.x = rcClient.right + 10 ; //vrati text na pocetak tj. na desnu stranu g_pPosition.x -= g_SpeedFactor[FAST][0] ; //brzina skrolovanja rc.left = g_pPosition.x ; //nova pozicija texta rc.top = g_pPosition.y ; //ptInfo->szBuffer buffer u kome drzim manje slogove texta g_pD3DFont->DrawText( NULL,ptInfo->szBuffer,-1, &rc, DT_CALCRECT, D3DCOLOR_XRGB(0,0,0)); g_pD3DFont->DrawText( g_pTextSprite,ptInfo->szBuffer, -1,&rc, DT_NOCLIP, D3DCOLOR_XRGB(0,0,0)); g_pTextSprite->End(); g_pd3dDevice->EndScene(); } g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); } |