MrMonday wrote:Wau, Tuhannet kiitokset kaikille nopeasta avusta
Alankin heti tarkastelemaan tarkemmin noita vastauksia...
EDIT:
No höh, tuo korjattu koodi ei sitten toiminutkaan.. ja jos yrittää laittaa että Car\Valittu = 0 niin iskee MAVia Perin mystistä, etten sanoisi..
Johtuen siitä, että aina kun muutat jotain parametriä taulukosta(Type), joudut käymään kaikki autot läpi, joka on aika sekaavaa aluksi.
Eli kun muutat Car\Valittu = 0, sinun täytyy ensiksi määrittää mikä taulukon kohta on se oikea.
Eli laitat siihen for CAr.... sitten If Car\valittu = 1 then Car\valittu = 0
Tässä on korjattu versio siitä kohdasta ja kommentoitu.
If KeyHit(28) Then
For Car.Autot = Each AUTOT ' joudutaan taas käymään kaikki autot läpi ja etsiä se oikea!!
If Car\Valittu = 1 'oikea löytyi
Car\Valittu = 0 'muutettaan se for each silmukassa
Exit 'poistutaan silmukasta sillä oikea auto on jo löydetty
EndIf
Next Car
ClearKeys
MoveObject Guy,0 ,-40
Goto Jalkaisin
EndIf
Alan taas tuota testaajaa tekee,nii miten sais sitä näytönohjainta rasitettuu?tarvii laittaa niitä kolmioita näytölle jotai 500,että alka fps tippuu alas,mut sitä lataus aikaaki tulee aika paljo lisää ja muutenkin alkaa jo hidastuu sen takii,kun pitää 500 kolmio tehdä...Oisko jotai toista tapaa,ettei tarttis mitää 500 kolmioo laittaa ruudulle pyörii.CBGL avulla siis...jotai kuvioita mitkä rasittais paljo?
Shadereita ei CBGL muistaakseni tue - niillä saisi melkoista rasitusta jo yhdelläkin kolmiolla. Raaka kolmioiden piirto kannattanee toteuttaa display listillä, jolloin CB:n pää ei hidasta hommaa yhtään niin pahasti, vaan saadaan jopa oikeaa käsitystä siitä, paljonko koneessa on tehoa. 500 kolmion kanssa tulee kuitenkin se ongelma, että se ei ainakaan omalla koneellani tuo FPS:ää lähellekään tuhatta, joten joudut mittaamaan esimerkiksi tietyn framemäärän piirtoon kuluvan ajan tai laskemaan FPS:n käsin (muuttujalla, jota kasvatetaan yhdellä joka frame)
Eli DrawToImage-DrawImage-DrawToScreen combolla tai Copyboxilla saa tuon aikaan varsin kivasti. Copybox on vähän nopeampi(?), mutta jättää kuvien maskivärin huomioimatta, jolloin usein piirretyn kuvan ympärille jää mustat reunukset. Mikä ei välttämättä tietenkään haittaa jos pohja on musta ja piirretyt kuvat eivät mene päällekkäin.
pohja=MakeImage(400,300)
//tämä tässä vain jotta copyboxin heikkouden näkee paremmin
DrawToImage pohja
Color cbwhite
Box 0,0,400,300,1
DrawToScreen
img=LoadImage("media/cow.bmp")
iw=ImageWidth(img)
ih=ImageHeight(img)
Repeat
If MouseHit(1) Then
//drawtoimage ottaa huomioon maskivärin
DrawToImage pohja
DrawImage img, MouseX()-2,MouseY()-2
DrawToScreen
ElseIf MouseHit(2) Then
//copybox nopampi, muttei ota maskiväriä huomioon
//jättää mustat reunukset
CopyBox 0,0,iw,ih,MouseX(),MouseY(),Image(img),Image(pohja)
EndIf
DrawImage pohja,0,1
DrawScreen
Forever
Quru3 wrote:Eli kolmioilla xD Vai kummat rasittaa enemmä kolmiot vai neliöt?Tai jotai reunan pehmennystä?ei jaksais mitää 500 kolmioo siihe laittaa -_-
Luonnollisesti kolmiot rasittavat neliöitä enemmän. Senhän voi päätellä jo miettimällä kuinka paljon monimutkaisempaa matematiikkaa niiden piirto vaatii. Eipä taida tukea reunojen pehmennystä
Quru3 wrote:Eli kolmioilla xD Vai kummat rasittaa enemmä kolmiot vai neliöt?Tai jotai reunan pehmennystä?ei jaksais mitää 500 kolmioo siihe laittaa -_-
En tajua, mikä paha siinä 500 (mikä on edelleen kovin vähän, joku 5000 pitäisi nyt vähintään olla, mieluummin 500 000, että nykykoneet rasittuvat) kolmion laittamisessa on. For-loopilla ja satunnaiskoordinaateilla se on muutaman rivin homma, tai jos haluat fiinistellä voit generoida jonkun mallin, esimerkiksi kuutio tai pallo nyt ei kovin monimutkaista säätöä vaadi. Tai miksei vaikka kleinin pullo, olen tehnyt sitä varten jopa semivalmiin generointisysteemin. Siinäkin menee maksimissaan parikymmentä riviä koodia, minkä ei pitäisi tappaa ketään.
en osaa jotenkin laittaa tota tonne loopin ulkopuolelle,nii tippuu jo 100 kolmiolla fps 125 Jos laitan loppin ulkopuolelle jotai noista kolmion lataus jutuista nii sitte siinä näytöllä menee vaa jotai väreilyy.Ja pitää tehä typellä,että saan esim ,et jokanen kolmio on aina vaik 0,5 kaukana toisistaan..
Quru3 wrote:en osaa jotenkin laittaa tota tonne loopin ulkopuolelle,nii tippuu jo 100 kolmiolla fps 125 Jos laitan loppin ulkopuolelle jotai noista kolmion lataus jutuista nii sitte siinä näytöllä menee vaa jotai väreilyy.Ja pitää tehä typellä,että saan esim ,et jokanen kolmio on aina vaik 0,5 kaukana toisistaan..
Kuulostaa hieman siltä että sinun pitäisi tutkiskella manuaalia hieman tarkemmin.
häh ;D Siis huomasin nytten vast ton jutun ,et se hidastuu sen takii kun ne on siel loopin sisällä..Ja tarviiha siinä typee käyttää jos haluun,et se kloonaa 100 000 tollasta kolmiota ja jokanen kolmio on 0,5 kauempana toisesta kolmiosta.Eikä cbgl taida mitään kovin hienoja manuskoja olla.Heti jos koittaa jotai laittaa loopin ulkopuolelle,ettei se hidastuis nii siinä alkaa väreilee jotai värei.
edit:En siis saa millää luotuu sitä kolmioo tuolla loopin ulkopuolella..
Näytönohjaimena on tollane hd 4890.Jos kloonaan vaikka 200 kolmioo ja ne kolmiot on päällekkäin eikä pyöri niin fps tippuu johonkin 100.Ja se varmaa johtuu siitä ,että joutuu kloonaamaan loopin sisällä.Enkä saa mitenkää kloonattuu niitä kolmioita loopin ulkopuolella.CBgl käytän ja jos siinä koittaa sen loopin ulkopuolella kloonaa niitä kolmioita nii ne ei tuu siihe.En osaa selitää,mut en saa kloonattuu niitä kolmioita loopin ulkopuolella,kun loopissa se kloonaa kokoajan uudet 100?Ja hidastuu varmaa sen takia
Quru3 wrote:Näytönohjaimena on tollane hd 4890.Jos kloonaan vaikka 200 kolmioo ja ne kolmiot on päällekkäin eikä pyöri niin fps tippuu johonkin 100.Ja se varmaa johtuu siitä ,että joutuu kloonaamaan loopin sisällä.Enkä saa mitenkää kloonattuu niitä kolmioita loopin ulkopuolella.CBgl käytän ja jos siinä koittaa sen loopin ulkopuolella kloonaa niitä kolmioita nii ne ei tuu siihe.En osaa selitää,mut en saa kloonattuu niitä kolmioita loopin ulkopuolella,kun loopissa se kloonaa kokoajan uudet 100?Ja hidastuu varmaa sen takia
Kloonaa? Ei siinä mitään kloonaamista tarvita. Pelkkä simppeli tämmöinen:
Hän piirtää sen edelleen cbGL:llä, jolloin homma on hieman erilainen. 'Kloonaaminen' kuulostaa kuitenkin siltä, ettet tiedä OpenGL:stä juuri mitään. Systeemihän toimii kuin piirtokomennot, jos piirrät jotain jollain framella niin se ei ole seuraavalla siinä. Mitään piirtämääsi ei laiteta muistiin yhtä framea pidemmäksi ajaksi, joten tottakai piirrät asiat loopissa.
Mutta tee se kuitenkin järkevästi eli display listillä. Se on systeemi, joka tallentaa kolmiosi, joten kun piirrät display listiin ensin jotain, voit kutsua sitä myöhemmin yhdellä komennolla. cbGL:n mukana tulee jopa kaksi esimerkkikoodia aiheesta, teet siis valtavan display listin (piirtämällä kolmioita esimerkiksi for-loopissa) ja sitten kutsut display listiä piirtäessäsi.
Valtavan iso displaylist?Eikös toi displaylistissä vaa määritellä millanen se kolmio on?Nii miks siitä pitää sitten tehä niin valtavan iso vai mitä tarkotit
Nytten kun oon koittanu siellä loopissa vaan laittaa jotai
repeat
for x=0 to 100
cbgl0(glLoadIdentity) ' Reset The Current Modelview Matrix
cbgl3f(glTranslate, -1.5, 0.0, -6.0) ' Move Left 1.5 Units And Into The Screen 6.0
cbgl4f(glRotate, rtri, 0.0, 1.0, 0.0) ' Rotate The Triangle On The X axis ( NEW )
cbgl1i(glCallList, 1)
next x
Tolla se fps tippuu heti johonkin 125,ja tossahan ne kolmiot on päällekkäin...nii mitä teen tossa väärin kun fps tippuu noin alas?
EDIT:
Kone on aika uusi,ettei pitäisi sen takia tippua fps noin alas,jotain tossa vaan on väärin