| 
| Kirjoittaja | Viesti |  |       
 Jon
 
 | Ihan tyhmä ongelma, mutta...jos asetan kynän esim 2:ksi, täytän alueen ikkunasta ja luen ReadPixelillä, niin miksi tulos ei ole 2, vaan esim. 65505?| Perjantaina,  22. elokuuta, 2003 - klo 16.50: |  | 
 
 
 |  |       
 JPQ
 
 | Ei ole tyhmä ongelma mutta gurut kertokaahan vai liittyikö tämä 15/16/24bit tiloihin jos sellaisella ruudulla on ikkunasi? jos niin miten.| Perjantaina,  22. elokuuta, 2003 - klo 18.14: |  | 
 
 
 |  |       
 Jon
 
 | Mutta eikös kyniä pitäisi olla max 256 vai muistanko väärin. Sori, ei ole autodocceja eikä includeja käsillä.| Perjantaina,  22. elokuuta, 2003 - klo 19.30: |  | 
 
 
 |  |       
 Piru
 
 | Jon: Jos kyseessä on truecolor ruutu niin kirjoitusvaiheessa kirjoitetaan RGB pikseli mäpäten se paletista.. Eli *ptr = rgbpalette[pennumber]; noin karkeasti.| Perjantaina,  22. elokuuta, 2003 - klo 19.58: |  | 
 
 On mahdotonta mäpätä tätä toisinpäin, eli siis ReadPixel ei toimi truecolor ruuduilla.
 
 Jos haluat pikselin RGB-arvon käytä cybergraphics.libraryn funktiota ReadRGBPixel. Tämä siis toimii vain truecolor ruuduilla.
 
 
 |  |       
 Jon
 
 | Ahaa. En ole varma onko tommosia asioita Autodoceissa edes mainittu, mutta onpa hyvä tietää. Eli käytännössä pitäisi haistella ruudun syvyyttä ja käyttää sopiivaa funktiota värin lukuun.| Perjantaina,  22. elokuuta, 2003 - klo 22.15: |  | 
 
 Yritin kokeilla tehdä omaa flood filliä Stix-tyylistä peliä varten, mutta varmaan käytän systeemin RectFilliä alueiden täyttöön loppupeleissä
   
 
 |  |       
 Jon
 
 | Lisättäköön vielä se, että rekursiivista (x-ja y- koordinaattien suhteen) flood-funktiota, joka käyttää ReadPixel/WritePixel-yhdistelmää ei kannata tehdä. Todella hidas.| Perjantaina,  22. elokuuta, 2003 - klo 22.28: |  | 
 
 Oli tarkoitus kokeilla "puolirekursiivista" floodia, jossa y-akseli olisi rekursiivinen, ja piirto tehtäisiin viivalla, ei pisteellä.
 
 Muuten kai voisi käyttää systeemin Flood()-kutsua, mutta kun täytettyjen alueiden pinta-alat pitäisi laskea, enkä ole keksinyt mitään järkevää ratkaisua, muutenkuin että polygoni jaetaan neliöihin.
 
 
 |  |       
 Piru
 
 | Jon: Käytännössä paras keino mitä keksin on lukea koko pelialue floodin jälkeen fastmem bufferiin (graphics/ReadPixelArray8 planar ruuduille, cybergraphics/ReadPixelArray truecolor ruuduille) ja laskea fillatun alueen osuus sitten tuosta fastmem bufferista.| Lauantaina,  23. elokuuta, 2003 - klo 3.23: |  | 
 
 Tuota luettua muistia käsiteltäessä tulisi myös käyttää longword lukuoperaatioita maksimaalisen nopeuden saavuttamiseksi.
 
 Joka tapauksessa tämä metodi on satoja ellei tuhansia kertoja nopeampi kuin RexdPixel.
 
 
 |  |       
 Piru
 
 | Missään tapauksessa ei pidä käyttää WritePixel tai ReadPixel rutiineja.| Lauantaina,  23. elokuuta, 2003 - klo 3.26: |  | 
 
 Yksi mahdollisuus on laskea koko pelin bufferi koko ajan fastmem:a ja blitata ruudulle vain muuttuneet osat yhdellä kertaa. Näin voi käyttää omaa fillausrutiinia joka toimii suoraan fastmem bufferilla.
 
 Tässä tapauksessa fillatun alueen pinta-ala olisi suoraan tiedossa joten erillistä skannauskierrosta ei tarvittaisi.
 
 
 |  |       
 Jon
 
 | Piru: kiitos vinkeistä. Kaatui perjantaina kaljaa näppikseen niin koodaus loppui kuin kanan lento| Sunnuntaina,  24. elokuuta, 2003 - klo 23.52: |  | 
   
 Koska piirretty alue tulee olemaan monimutkainen, niin rekursiivinen funktio taitaa olla ainoa keino? Kehittelin rekursiivista neliöiden haku -algoritmia, jonka tuottamat neliöt sitten voisi täytellä nopeasti. Samalla pinta-ala tulisi laskettua helposti. (olettaen että tuo mullistava algoritmi toimii...)
 
 
 |  |