Jag håller på med ett rymdspel. Det finns en bakgrund som är 600x1200 och ska åka neråt så att det ser ut som om man åker framåt, men när den gör det så blinkar den! Hur undviker man det?
PS.
Är det nån som är bra på att måla och har lust att rita en rymdfärja (30x30)?
Det här har jag aldrig gjort själv utan är sånt som jag läst och antar att jag har förstått...
Dubbelbuffra bilden. Dvs. Samtidigt som du visar en bild på skärmen så ritar du upp nästa i minnet och växlar sen fram bilden i minnet till skärmen och ritar upp en ny bild i minnet.. Typ..
Pekare borde vara bra att använda till detta tycker jag...
Fast jag vet inte ens om det finns pekare i delphi då jag inte använt det överhuvudtaget.
Det är just dubbelbuffring du ska göra men det räcker inte, att rita grafik direkt i windows är ingen bra idé, jag har själv använt DirectX då det är mycket snabbare och har inbyggt stöd för dubbelbuffring. Kolla på http://www.delphi-jedi.org/ när den kommer upp igen.
"
Det är just dubbelbuffring du ska göra men det räcker inte, att rita grafik direkt i windows är ingen bra idé
"
Hur funkar det i DirectX då, det är ju windows och grafik.
Med att rita direkt i windows menar jag att rita med TCanvas och liknande, du får ingen dubbelbuffer, ingen synkning mot monitorn och ingen kontroll över operativsystemet. Vilket innebär att om något program i bakgrunden plötsligt får för sig att nu ska jag jobba lite så laggar ditt spel ner. Windows kan ibland få sånt för sig, särskillt om du kör i ett fönster. Jag har inte kollat på OpenGL men DirectX var inte så svårt att lära sig som man tror och det finns konverterade API headers (från c++) för Delphi och massvis av exempel på nätet.
Ska man göra nåt som lite mer seriöst ut är det bara det som gäller.