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

Fast drawing?

[es] :: C/C++ programiranje :: Fast drawing?

[ Pregleda: 2207 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

veljaradenkovic
Velja Radenkovic
Beograd

Član broj: 2977
Poruke: 281
*.ptt.yu

ICQ: 147120023


Profil

icon Fast drawing?25.10.2003. u 18:24 - pre 249 meseci
Ovako stoje stvari:

Pokusavam da iscrtam polyline od 1024 tacke svakih 200 ms. Prvo sam pokusao da to sve stavim u onDraw proceduru i da na timer (multimedijalni) uradim InvalidateRect da se sve to ponovo iscrta sa novim vrednostima (arrayom tacaka) koje stizu sa USB porta.

Al ne lezi vraze i pre razocaravajuceg ispravljanja (bilo je i situacija 102 errors, 18 warnings) i konacnog pustanja u rad predpostavljao sam da ce da blinka (flikeruje).
Imao sam rezervu Duble buffering (Crtanje Bitmape u memorij i slanje na ekran) i to sad izgleda radi, ali video sam druge programe koji otprilike ovako brzo crtaju OnPaint i ne flikeruju.
Dakle moze.

Ako bi neko mogo da me uputi na neko ucilo ili podeli iskustva bio bih mu zahvalan.

Usput hvala pojedincima na drustveno korisnom radu.
Bez njih moj Multimedijalni tajmer ne bi protiktao.
 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.lsil.com



+1001 Profil

icon Re: Fast drawing?26.10.2003. u 02:54 - pre 249 meseci
Pravilo prvo:

Uvek crtaj u memoriji (tj. u kompatibilnom DC-ju) i kad je gotovo uradi BLT
u dc(this). BTL je garantovano sinhron sa vertical blanking intervalom, tako
da nikada nece doci do flicker-a.

Pronadji na www.codeproject.com klasu CMemDC od Keith Rule-a - fina
dosetka koja lepo radi

Pravilo drugo:

Ne prefarbavaj sto ne moras:
- razdvoj regione koji se nikada ili retko prefarbavaju od onih koji se svaki
cas prefarbavaju.
- umesto InvalidateRect mozes koristiti i InvalidateRgn
- ako istu povrsinu prefarbavas dva ili vise puta flicker je garantovan

Pravilo trece:
- sinhronizuj crtacke rutine sa metodima koji od spolja setuju parametre
bitne za crtanje. Upotrebi kriticnu sekciju (CCriticalSection radi sasvim
lepo). Message handleri su medjusobno sinhronizovani, ali ostale metode
iste klase ne mora da budu (i najverovatnije nisu).
 
Odgovor na temu

veljaradenkovic
Velja Radenkovic
Beograd

Član broj: 2977
Poruke: 281
195.252.80.*

ICQ: 147120023


Profil

icon Re: Fast drawing?27.10.2003. u 14:43 - pre 249 meseci
Hvala ti.

Ova klasa (CMemDC od Keith Rule-a) odlicno radi.

Inace http://www.codeproject.com mi je omiljeni.

Jos jednom hvala.




 
Odgovor na temu

milanche
San Francisco

Član broj: 2447
Poruke: 1200
*.oak.inreach.net



+1001 Profil

icon Re: Fast drawing?28.10.2003. u 12:19 - pre 249 meseci
Mala ispravka:

Ako crtas u memoriji, ponovno prefarbavanje iste povrsine nece prouzrokovati
flicker, jedino ces potrositi vise CPU ciklusa. Drugim recima, ako je ispunjeno
prvo pravilo, drugo nema toliko veze.

Ako crtas direktno, koristeci dc(this), onda su optimizacije opisane pod drugim
pravilom vise nego neophodne.

Pozdrav i nema na cemu
 
Odgovor na temu

[es] :: C/C++ programiranje :: Fast drawing?

[ Pregleda: 2207 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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