Naime, zelim napraviti pixel koji se krece i iza sebe ostavlja trag. Trenutno radim tako da u vertex bufferu imam samo 1 tocku koju po potrebi crtam i translatiram onoliko puta koliko je dugacak trag. U pocetku sve radi OK, ali kada se trag nakon nekog vremena poveca, crtanje se znatno uspori.
Code:
for ( int i=0; i<duzinaTraga; ++i )
{
d3d_Device->DrawPrimitive ( D3DPT_POINTLIST, 0, 1 );
D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation( &matWorld, trag[i].x, trag[i].y, 0.0f );
d3d_Device->SetTransform ( D3DTS_WORLD, &matWorld );
}
for ( int i=0; i<duzinaTraga; ++i )
{
d3d_Device->DrawPrimitive ( D3DPT_POINTLIST, 0, 1 );
D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation( &matWorld, trag[i].x, trag[i].y, 0.0f );
d3d_Device->SetTransform ( D3DTS_WORLD, &matWorld );
}
Problem je u funkciji DrawPrimitive koja se poziva sve vise i vise puta kako trag raste, a time se sve usporava. Zna li netko kako doskociti ovom glupastom problemu? :-)
P.S. Radim u DirectX 9. Pokusavam napravit neku 2D igru.