Kirjoittaja: Antti Laaksonen
Kirjoitettu: 11.01.2002 – 11.01.2002
Tagit: grafiikka, koodi näytille, vinkki
Hieman QBasicin omia grafiikkakomentoja nopeampaa on piirtää grafiikkaa suoraan näyttömuistiin. Tämä esimerkki on näyttötilalle 13. Ohjelman alussa määritetään muistisegmentti, josta näyttömuisti alkaa. Tämän jälkeen pikselin väriä voi muuttaa POKE-komennolla. Pikselit ovat muistissa peräkkäin ylhäältä alas ja vasemmalta oikealle. Jos halutaan piirtää pikseli X:n ja Y:n perusteella, laskukaava on X + (Y * 320).
'näyttötila 320x200x256 SCREEN 13 'muistisegmentin määrittely DEF SEG = &HA000 'aloitetaan piirtäminen kohdasta (100, 50) kohta& = 100 + (50 * 320) 'piirretään valkoinen,vaakasuuntainen viiva FOR i% = 0 TO 30 POKE kohta& + i%, 15 NEXT 'palautetaan alkuperäinen muistisegmentti DEF SEG
Tämän saa toimimaan myös SCREEN 12 vähän kikkailemalla :).
Tässäkin kannattaisi käyttää kokonaislukuja liukulukujen tilalta niin nopeutuisi vielä enemmän. Eli muuttuja i => i&.
Tärkeä ohjelma
Niin, miten pitää kikkailla? Jollain OUTeilla, INPeillä, POKEilla ja PEEKillä??
Saako POINT-käskylle vastaavanlaisen? Onko käskyä joka palauttaa POKE x + (y * 320):n arvon.
On, vastaavasti PEEK(x + (y * 320)) palauttaa pikselin värin.
Juu, tuota vähän arvelinkin, kun olin nähnyt jossain puhuttavan PEEK:istä POKE:n yhteydessä.
antilta aina tulee hyviä vinkkejä. mun grafiikkaohjelmista kun tuppaa yleensä tulemaan hitaita niin toi pokehomma nopeutti reilusti. suosittelen psetin sijasta
antilta aina tulee hyviä vinkkejä. mun grafiikkaohjelmista kun tuppaa yleensä tulemaan hitaita niin toi pokehomma nopeutti reilusti. suosittelen psetin sijasta
kohta& = 100 + (50 * 320)
pitäis olla
kohta& = 100 + (50 * 320&)
eli siis &-merkki puutuu. Syy: jos kohta on esim 319,199 tulee "overflow".