Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Kuvan scrollaaminen

JoinTuanJanohon [11.05.2006 15:01:55]

#

Kun kuvaa scrollaa Windowsin ikkunassa suhteellisen nopeasti vasemmalle tai oikealle, niin minkälaisella manööverillä liikuttamisen saisi tahdistettua näytönohjaimen kanssa siten, ettei kuva välkyttäisi?

Yritin kahden piirtopinnan avulla, mutta kun piirtopinnat swappaa keskenään, silloin välkytti vielä pahemmin.

zacura [11.05.2006 17:09:04]

#

Oletko kokeillut BitBlt funktiota, se on kohtuullisen nopea tapa piirtää grafiikkaa. Haulla varmaan löytyy jotain esimerkkejä/koodivinkkejä.

JoinTuanJanohon [11.05.2006 19:11:57]

#

Juuh, BitBlt funktiolla scrollaaminen on nyt tehty.

JoinTuanJanohon [12.05.2006 10:19:49]

#

Tarkennusta edelliseen, siis BitBlt funktio nimenomaan välkyttää, kun sitä ei ole tahdistettu näytönohjaimen kanssa. (Edellisestä saattoi ymmärtää väärin, että ongelma olisi jo ratkennut.)

Metabolix [12.05.2006 20:39:44]

#

Millähän tavalla nuo piirtopinnat swappasit? Toivottavasti yritit oikealla kaksoispuskuroinnilla ja SwapBuffers-funktiolla etkä BitBlt:llä ja tekokaksoispuskurilla.

Luullakseni jo tuo saattaa riittää tahdistamiseen näytönohjaimen kanssa, ja jos ei, niin ainakin alustamalla OpenGL:n pääsee tuloksiin. Usein VSync on itsestään päällä, ja sen käyttöön voi vaikuttaa tällaisella viritelmällä:

typedef BOOL (APIENTRY * t_wglSwapIntervalEXT) (int);

t_wglSwapIntervalEXT f_wglSwapIntervalEXT =
  (t_wglSwapIntervalEXT) wglGetProcAddress("wglSwapIntervalEXT");

if (f_wglSwapIntervalEXT)
  f_wglSwapIntervalEXT(1); /* 1 = päällä, 0 = pois */

Jossain näin väitettävän, että tuo toimisi vain kokoruututilassa, mutta kyllä se minulla toimii ikkunassakin; 125 kuvaa sekunnissa jää 75:ksi, jos ei erityisesti laita VSynciä pois.

JoinTuanJanohon [14.05.2006 13:00:42]

#

SwapBuffers-funktiolla ei välkytä. Tein nimenomaan mainitsemallasi väärällä tavalla (BitBlt:llä ja tekokaksoispuskurilla).

Mutta nyt homma toimii, kiitos ratkaisusta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta