Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 4.425 pregleda

Najnovija ↓

Pixel koji iza sebe ostavlja trag (u DirectX-u) 02.03.2005. u 00:28 · pre 263 meseca #1
Pocetnik sam pa imam problema oko jednostavnih stvari.

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


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.
Re: Pixel koji iza sebe ostavlja trag (u DirectX-u) 02.03.2005. u 18:15 · pre 263 meseca #2
Za Direct3D se racuna da ne bi trebao da radis vise od nekoliko stotina DrawPrimitive-a po frejmu. Probaj da sve tacke traga stavis u jedan vertex buffer i da tako iscrtas ceo trag iz samo jednog DP poziva.

Takodje, gledaj da ti VB sadrzi transformisane tacke, bolje ti je da ga jedanput lockujes (sa discard, naravno!) i updateujes, nego da stalno menjas world matrix.
Re: Pixel koji iza sebe ostavlja trag (u DirectX-u) 18.03.2005. u 16:34 · pre 263 meseca #3
Ma slusaj kako ces izbaci draw primitive iz for ciklusa. Ali ceo taj code moras da stavis u Begin -- End i tako ce ti 100x ici brze jel ti nemoras crtati svaki put tacku samo je ispomeras pre nego sto je prikazes na ekranu i ona se prikaze na svim mestima na koje si je pomerio. Imas samo jednu tacku. Da li me razumes?
Potpis
Arhitektonski biro kula-projekt.co.rs
Kalkulator kursa kursnalista.org
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme