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 ?
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 );
}