Nyt ollaan edellisen viestini jälkeen hieman opeteltu Allegron käyttöä ja korjailtu eri funktioiden toimintaa. Muutamia uusia CB:n funktioita ollaan saatu tehtyä toimintaan.
Pikselioperaatiot toimivat cbE:ssä nyt varsin hyvin. Lukittuun puskuriin operaatiot ovat CB:n omia nopeampia, mutta lukitsemattomaan puskuriin tehdyissä operaatioissa cbE häviää (reilusti) CB:lle. Tämä johtuu kuvien sijaitsemisesta näytönohjaimen muistilla, joten siihen nopeuteen tuskin tulee muutosta. Eli kannattaa lukita puskuri aina, kun käyttää pikselioperaatioita.
cbE ei tee komennoissa tai funktioissa eroa lukitun ja lukitsemattoman välille, joten sekä PutPixel että PutPixel2 toimivat sekä lukittuihin että lukitsemattomiin puskureihin. Sama pätee myös GetPixeliin sekä PickImageColoriin. Myöskin PickColor hyötyy näytönpuskurin lukitsemisesta.
Törmäykset ovat yhä työvaiheessa, mutta VesQ on lupautunut vilkaisemaan niitä ja ne toivottavasti saadaan ainakin osittain toimintaan lähiaikoina.
Uutena ominaisuutena tuli uusien funktioiden lisäämisen mahdollisuus. Eli nyt pystymme laajentamaan CB:n funktioiden määrää nyt varsin helposti. Tämän toiminto vaatii pienien funktiorunkojen tekemistä CB:n puolelle.
Code: Select all
Function testiFunktio(fa)
group = 1
id = 13
EndFunction
Käytännössähän cbE:n tulevien sisään rakennettujen funktioiden tapauksessa teidän tarvitsee vain Includen avulla liittää nuo "headerit" ohjelmaanne.
cbE tutkii kaikki funktiot ja mikäli se löytää funktion, joka sisältää ainoastaan kaksi muuttujaansijoitusoperaatiota, niin se koittaa etsiä taulukostaan noihin kahteen muuttujan arvoon sopivaa funktiota. Sitten cbE vaihtaa funktiokutsun kutsumaan haluttua c/c++ funktiota. Tämän ansiosta lisätyt funktioit ovat aivan yhtä nopeita kuin cb:n omat funktiotkin.
Haluamme tietysti tuoda teille mahdollisuuden käyttää samaa tekniikkaa myös luodessanne uusia kirjastoja, niin ei tarvitse enää pyöritellä muistipaloja ja kutsuminen on paljon nopeampaa. KW ilmeisesti (kun se on aiheellista) tekee mahdollisuuden linkittää kirjastoja myös staattisesti suoraan cbE:tä käyttävään ohjelmaan, jolloin DLL:llää ei tarvita, mutta myös mahdollisuus käyttää dynaamista linkitystä kirjastojen kanssa annetaan. CB:llä ohjelmoinnin kannalta kirjastojen linkitystavalla ei ole oikeastaan merkitystä. Dynaamisen linkityksen tapauksessa oletettavasti pitää kutsua jonkinlaista "LoadLib" funktiota (nimeä ei ole vielä päätetty), joka lataa dynaamisen kirjaston. KW osannee kertoa enemmän tuosta staattisen linkityksen käyttämisestä kirjastojen kanssa.
cbE:n tulevista uusista funktioista tästä ensimmäisenä mieleen tulevat ainakin Triangle-funktio kolmioden piirtämistä varten ja mahdollisuus tiedon siirtämiseen netin yli. En ole aivan varma tulemmeko käyttämään suoraan cbNetworkin funktioiden nimiä ja toimintaa (jolloin cbNetworkillä tehdyt ohjelmat toimisivat suoraan) vai teemmekö oman jolloin yhteyksien muodostaminen voisi tulla helpommaksi ja Tcp-tuki sulautuisi paremmin mukaan. (Itse olen ehkä jälkimmäisen kannalla)