Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pixel koji iza sebe ostavlja trag (u DirectX-u)

[es] :: 3D programiranje :: Pixel koji iza sebe ostavlja trag (u DirectX-u)

[ Pregleda: 3540 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aragorn2004

Član broj: 40687
Poruke: 14
*.cmu.carnet.hr.



Profil

icon Pixel koji iza sebe ostavlja trag (u DirectX-u)01.03.2005. u 23:28 - pre 233 meseci
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.
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net.



+18 Profil

icon Re: Pixel koji iza sebe ostavlja trag (u DirectX-u)02.03.2005. u 17:15 - pre 233 meseci
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.
 
Odgovor na temu

miskec
Beograd, Srbija

Član broj: 16553
Poruke: 155
*.beoland.sezampro.yu.

ICQ: 311547362
Sajt: www.autokupovina.com


Profil

icon Re: Pixel koji iza sebe ostavlja trag (u DirectX-u)18.03.2005. u 15:34 - pre 232 meseci
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?
Arhitektonski biro kula-projekt.co.rs
Kalkulator kursa kursnalista.org
 
Odgovor na temu

[es] :: 3D programiranje :: Pixel koji iza sebe ostavlja trag (u DirectX-u)

[ Pregleda: 3540 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.