cbEnchanted - uudelleenkirjoitettu runtime

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
Post Reply
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

cbEnchanted - uudelleenkirjoitettu runtime

Post by KilledWhale »

Joku vuosi sitten joku ehdotteli irkissä CB:n runtimen uudelleenkirjoittamista cbDecompilerilla saatujen tietojen perusteella, mutta urakka vaikutti vähän turhan isolta, sillä CB sisältää monta sataa komentoa joiden kirjoittamisessa olisi oma työnsä.

Viime keväänä päädyin kuitenkin tekemään leikkimielistä kokeilua asian suhteen hyvällä menestyksellä:
Image

Tavoitteena oli saada tämä efekti pyörimään uudessa runtimessa näin aluksi ja tähän pisteeseen pääsemiseen vierähti muutama päivä. Vasemmanpuolimmaisessa neliössä pyörii siis winetettynä alkuperäistä CB:n runtimea käyttävä efekti ja oikealla tämän projektin uudelleenkirjoitettua runtimea käyttävä efekti. Pientä eroavaisuutta on nähtävissä ClanLibin hassujen piirtokomentojen takia, mutta pääpiirteittäin tulos on sama, joskin nopeampi.

Projekti kaipaisikin hieman lisää miesvoimaa kirjoittelemaan komennoille täytettä ja tämän lisäksi muutama suurempi kokonaisuus (tilekartat ja objektit) vaatisivat kirjoittamista. Kielenä on C++, joten jonkinlainen kokemus C:stä tai C++:sta on suotavaa, jokseenkaan ei pakollista. Jos kiinnostusta kieltä kohtaan löytyy niin tämä voi olla myös erinomainen oppimistilaisuus, sillä asioita oppii todella nopeasti jos on valmista ohjelmointikokemusta esimerkiksi CB:n saralla. (Itsekin opiskelin C++:n hyvin pitkälle erään open source -projektin kautta, johon päädyin lähinnä mielenkiinnon vuoksi.)

Tämä projekti ei tule kuitenkaan olemaan open sourcea (ainakaan täysin), sillä tulkkiosan julkaiseminen avoimeksi saattaisi herättää pelkoa koodin varastamisessa joidenkin käyttäjien kohdalla, mutta mahdollisesti projektista voisi erotaa läjän CB-komentoja helpottamaan siirtymistä C++:n maailmaan.

Tällä hetkellä projekti pyörii siis ClanLibin päällä, mutta tässä vaiheessa grafiikkakirjaston vaihtaminen on vielä lähes ongelmatonta. SDL voisi olla parempi ja helpompi vaihtoehto, tosin ikävällä lisenssillä varustettuna. Ehdotuksia tämän suhteen otan kyllä mielelläni myös vastaan. Kuitenki joku cross-platform kirjasto sen tulee olla, jotta Linux-tuki, jota varten tätä alun alkaen aloin tekemään säilyy, mutta projekti olisi tarkoitus tarjota myös windows-käyttäjille.

Projekti oli alun perin toteutettu ClanLibin avulla, mutta siitä siirryttiin pikaisesti SFML:ään, joka oli niin buginen, että kirjastoa päätettiin vaihtaa vielä kertaalleen ja alla jyllää nykyään allegro.

Mitä tällä hetkellä on tehtynä:
Valmis
Osittain valmis
Pahasti kesken
  • CB:n tavukoodin jauhanta 
  • Muuttujien käsittely
  • Loopit
  • Taulukot
  • Tyypit
  • Funktiot
  • Piirtokomennot
  • Matematiikkakomennot
  • Järjestelmäkomennot
  • Objektit
  • Kartat
  • Partikkelit
Jos nyt kiinnostuit yhtymään projektiin niin yhteyttä voi ottaa vaikka yksityisviestillä tai tökkimällä irkissä (KilledWhale @ IRCnet)
Last edited by KilledWhale on Sat Apr 07, 2012 5:12 pm, edited 2 times in total.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by MaGetzUb »

Kuulostaa hyvältä!... Itse olin kyllä kirjoittamassa justiin cbSDL2:a.. (lähes kaikki grafiikat piirretään cb:lä cb komentojen tyylisesti) Mutta se on nyt vähän jäissä.. :D Voisin tulla mukaan tähän projektiin, mutta epäilen riittääkö motivaationi (kaverien kanssa eräs peliprojekti kesken) ja koodaustaitoni... Mutta joo, odotan innolla mitä tästä tulee. :)
EDIT:

Eli jos laitat tän projektin vaikka Gittiin, niin sitten voisin ainakin minä olla vaikka mukana. :D

EDIT:

2. Niin eli minulta löytyy myös C++ kokemusta, Qt:ta olen myös käyttänyt.. Mutta perus C++ onnistuu myös. :P

Last edited by MaGetzUb on Fri Dec 16, 2011 3:29 pm, edited 1 time in total.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Latexi95 »

Minäkin ilmoittaudun vapaaehtoiseksi. Keskeneräisiä projekteja on kyllä yllinkyllin, ja niitäkin pitäisi tehdä, mutta kyllä minä ainakin muutaman funktion voin tehdä. Lähinnä ilmoittaudun mukaan halusta tutustua runtimen toimintaan.

C/C++ kokemusta on jo aika mukavasti kertynyt. Lähinnä Qt:ta olen käyttänyt, minkä olen varsin usein muistanut mainita... :lol:
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by axu »

Jos tämä vaan valmistuu ennen classicia, niin ihanaa! Siis kunhan et vähennä classicin parissa työskentelemistä tämän takia :D Itse en voi taitojen puutteessa olla avuksi, mutta olen täällä taustajoukoissa kannustamassa ja jakamassa mielipiteitäni :P
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by MaGetzUb »

Miten olisi ClanLibin vaihto vaikka SFML kirjastoon? :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Timblex »

Toivottavasti tässä pysyvät samat komennot kuin alkuperãisessä cb:ssä ettei vaikuta mitenkään esim. cbSDK:hon.
Onnea projektille! :)
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Latexi95 »

MaGetzUb wrote:Miten olisi ClanLibin vaihto vaikka SFML kirjastoon? :)
Voisi olla ihan hyvä vaihtoehto. Qt:ta en kyllä tähän projektiin ala tyrkyttämään, lähinnä sen dynaamista linkittämistä vaativien lisenssihtojen takia. OpenGL:llä piirto, niin kyllä luulisi efektien pyörivän vauhdilla.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by KilledWhale »

Latexi95 wrote:
MaGetzUb wrote:Miten olisi ClanLibin vaihto vaikka SFML kirjastoon? :)
Voisi olla ihan hyvä vaihtoehto. Qt:ta en kyllä tähän projektiin ala tyrkyttämään, lähinnä sen dynaamista linkittämistä vaativien lisenssihtojen takia. OpenGL:llä piirto, niin kyllä luulisi efektien pyörivän vauhdilla.
Käytännössähän kaikki tai ainakin suurin osa cross-plat kirjastoista piirtää OGL:llä.

Otin nyt käyttöön IRC-kanavan yhteydenpitoa varten. Innokkaat voivat joinia #cbenchanted @ IRCnet
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by esa94 »

KilledWhale wrote:Joku vuosi sitten joku ehdotteli irkissä CB:n runtimen uudelleenkirjoittamista cbDecompilerilla saatujen tietojen perusteella
Aina välillä.


Miksi tämä nyt niin lumottu on? (enhanced-enchanted)
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by KilledWhale »

esa94 wrote:
KilledWhale wrote:Joku vuosi sitten joku ehdotteli irkissä CB:n runtimen uudelleenkirjoittamista cbDecompilerilla saatujen tietojen perusteella
Aina välillä.


Miksi tämä nyt niin lumottu on? (enhanced-enchanted)
Panovirhe pahalainen. Jääköön kuitenkin lumotuksi kun ei tämä kuitenkaan paljon alkuperäistä parempi ole ;)
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Timblex »

Killedwhale wrote: -cbEnchanted
Killedwhale@Tyhmät kysymykset wrote:faecplam
Taitaa sinulla noita virheitä tulla oikein urakalla :lol:
Last edited by Timblex on Sun Jan 13, 2013 6:05 pm, edited 1 time in total.
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Latexi95 »

timpe99 wrote:
Killedwhale wrote: -cbEnchanted
-panovirhe
Killedwhale@Tyhmät kysymykset wrote:faecplam
Taitaa sinulla noita virheitä tulla oikein urakalla :lol:
*facepalm*

KW: protip: Älä kirjoita tahallaan väärin. Joku luulee sitä vahingossa väärin kirjoitetuksi kumminkin. :lol:
timpe99: Tuo ei ollut toinen lainaus ei ollut KW:n viestistä vaan Chaoswormin.
User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by CCE »

timpe99 wrote:
Killedwhale wrote: -cbEnchanted
-panovirhe
Killedwhale@Tyhmät kysymykset wrote:faecplam
Taitaa sinulla noita virheitä tulla oikein urakalla :lol:
Minunkin mielestäni KilledWhale voisi hieman petrata kirjoitusasuaan.

Itse mietin joskus CoolBasic-koodin kääntämistä JavaScriptiksi selainpelejä varten, mutta siihen tarvitsisi jo melkeinpä oman kääntäjän. Ehkä pitäisi toivoa joululahjaksi sitä kuuluisaa Dragon Bookkia...
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Awaclus »

timpe99 wrote:
Killedwhale@Tyhmät kysymykset wrote:faecplam
Taitaa sinulla noita virheitä tulla oikein urakalla :lol:
Oi voi, salainen identiteettini on paljastunut.

Meinasin kyllä ensin kirjoittaa "faceplam", mutta sitten tuli mieleen, että joku kuitenkin luulee sitä vahingoksi, joten piti lisätä siihen toinenkin virhe.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by KilledWhale »

Projektia on nyt useamman henkilön voimin kehitelty ja etenemistä on tapahtunut varsin mukavaa tahtia. Ensimmäisen viestin esimerkkikuvassa näkyvä efekti pyöri itselläni alkuperäisellä runtimella n. 25-30 FPS ja uudemmalla runtimella n. 750-800FPS, eli nopeusero on jokseenkin huomattava. ClanLibin sijaan alla raksuttaa nykyään SFML, joka on ainakin tähän asti vaikuttanut varsin pätevältä kirjastolta.

Laskunopeutta testattaessa keskiarvoksi muodostuu nykyisellään n. 40-kertainen nopeusetu, eli parantamisen varaa on vielä reilusti, mutta jo nykyinen versio taklaa bittejä huomattavasti nopeampaa tahtia.

Viimeisimpänä päivityksenä tuli koodailtua funktiotuki ja seuraavalla koodilla sainkin aikaan juuri halutun tuloksen:

Code: Select all

// Sierpinski triangle made with CoolBasic
SCREEN 800, 800
 
sierTri(0, 800, 400, 0, 800, 800, 9, 0, 1)
DrawScreen OFF
WaitKey
 
Function sierTri(x1#, y1#, x2#, y2#, x3#, y3#, d, n = 0, dd = 0)
	Line x1 + 1, y1, x2 + 1, y2
	Line x2 + 1, y2, x3 + 1, y3
	Line x3 + 1, y3, x1 + 1, y1
 
	If n < d Then
		If n = 0 Then 
			sierTri((x1 + x2) * 0.5, (y1 + y2) * 0.5, (x1 + x3) * 0.5, y1, (x2 + y3) * 0.5, (y1 + y2) * 0.5, d, 1, dd) 
		Else
			sierTri((x1 + x2) * 0.5, y1 - (y2 - y1) * 0.5, (x1 + x3) * 0.5, y1, (x2 + x3) * 0.5, y1 - (y2 - y1) * 0.5, d, n + 1, dd)
			sierTri(((x1 + x2) * 0.5) - (x3 - x2), y1 + (y2 - y1) * 0.5, (x1 + x3) * 0.5 - (x3 - x1) * 0.5, y2, (x2 + x3) * 0.5 - (x3 - x2), y1 + (y2 - y1) * 0.5, d, n + 1, dd)
			sierTri(((x1 + x2) * 0.5) + (x3 - x2), y1 + (y2 - y1) * 0.5, (x1 + x3) * 0.5 + (x3 - x1) * 0.5, y2, (x2 + x3) * 0.5 + (x3 - x2), y1 + (y2 - y1) * 0.5, d, n + 1, dd)
		EndIf
	EndIf
	If dd and Rand(1, 10) = 1 Then DrawScreen OFF
EndFunction
Kuvassa efekti on siis vasta piirtovaiheessa:
Image

Funktioiden myötä kielen perusominaisuudet alkavat olla jotakuinkin kasassa. Vielä pitää tehdä tyypit sekä select-case rakenteet joiden jälkeen alkaakin ankea puurtaminen yksittäisten funktioiden kanssa.

Matemagiikka sekä muistipalakomennot ovat suurelta osin valmiita ja niiden lisäksi työn alla ovat olleet myös kuvat sekä objektit (kuvia ja julkaisuja myöhemmin), eli projekti etenee ainakin toistaiseksi varsin sukkelaa tahtia.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Latexi95 »

Pientä tilannetiedotetta.

Projekti etenee varsin mukavasti. Ongelmat tuplapuskurointi + "DrawScreen OFF" yhdistelmästä on toivottavasti saatu ratkaistua ja muutenkin piirtokomennot ovat valmiita ja todella nopeita verrattuna aikaisempaan. KW:n ylemmässä viestissä oleva sierpinskin kolmion tekemiseen menee CB:ltä minun koneella noin 12 sekunttia. cbEnchanted pystyi piirtämään saman reilussa sekunnissa, eli nopeus 10 kertaistui.

Matikkakomennot, piirtokomennot ja äänet ovat tehtyinä. Kuvia saa jo piirrettyä ruudulle, mutta niihin ei saa vielä piirrettyä. Objekteja on aloitettu tekemään, mutta niissä on vielä reilusti hommaa.

KW:lla on ilmeisesti vielä hommaa tyyppien parissa. Tänään korjasin globaaleiden muuttujien kanssa olleita ongelmia (niitä ei toivottavasti enää ole) ja ajattelin seuraavaksi siirtyä tekemään kuviin piirtoa ja DrawToWorld komentoa kuntoon.
EDIT:

Niin ja cbE:n tulee tuki alpha-kanavallisille kuville ja objekteille, mutta tuki maskivärille on luonnollisesti säilytetty rinnalla. Pohdimme myös kannattaisiko viivoihin käyttää pehmennystä (GL_LINE_SMOOTH) vai antaa opengl:n piirtää ne ihan karkeina CB:n tapaan.

Jonkinlaista Debug-ominaisuutta on myös suunniteltu. Ainakin olisi hyvin yksinkertaista toteuttaa tarkistus jokaisen objekti, kuva ja muistipala komennon kohdalla, että käytetty kuva/objekti/muistipala on olemassa. Pitää muistaa laittaa virheilmoitukseen MAV. ;)

User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Misthema »

Latexi95 wrote:
EDIT:

Pohdimme myös kannattaisiko viivoihin käyttää pehmennystä (GL_LINE_SMOOTH) vai antaa opengl:n piirtää ne ihan karkeina CB:n tapaan.

Miksi tätä varten ei voisi luoda uutta komentoa, tai parametriä komentoon? CB:ssä kuitenkin on tämä SMOOTH2D ON/OFF, jota voisitte hyväksikäyttää pohdinnassanne. Itse ainakin haluaisin pystyä valitsemaan, ovatko pikselini pehmeitä vai karkeita. Karkeareunaiset grafiikat ovat kuitenkin osa retroisuutta, josta ainakin minä pidän paljon.

Mukava olisi myös saada jonkinlainen systeemi virtuaaliselle resoluutiolle, ja kun kerran oGL on rajapintana, niin ehkä seuraava toimisi ilman sitä ärsyttävää blurrautumista:

Code: Select all

glMatrixMode GL_PROJECTION
glLoadIdentity
glOrtho 0,vres_width,vres_height,0,-1,1
glMatrixMode GL_MODELVIEW
glLoadIdentity
glViewport 0,0,vres_width,vres_height
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Latexi95 »

Misthema wrote: Miksi tätä varten ei voisi luoda uutta komentoa, tai parametriä komentoon? CB:ssä kuitenkin on tämä SMOOTH2D ON/OFF, jota voisitte hyväksikäyttää pohdinnassanne. Itse ainakin haluaisin pystyä valitsemaan, ovatko pikselini pehmeitä vai karkeita. Karkeareunaiset grafiikat ovat kuitenkin osa retroisuutta, josta ainakin minä pidän paljon.

Mukava olisi myös saada jonkinlainen systeemi virtuaaliselle resoluutiolle, ja kun kerran oGL on rajapintana, niin ehkä seuraava toimisi ilman sitä ärsyttävää blurrautumista:

Code: Select all

glMatrixMode GL_PROJECTION
glLoadIdentity
glOrtho 0,vres_width,vres_height,0,-1,1
glMatrixMode GL_MODELVIEW
glLoadIdentity
glViewport 0,0,vres_width,vres_height
Itsekkin mietin tuota Smooth2D:n ottamista siihen käyttöön. CB:llä on kyllä paljon tullut pelejä joissa karkea grafiikka on oleellista, eli jonkinlainen valinta pehmennystä ajatellen varmaankin kehitellään.

Mitä tarkoitat virtuaalisella resoluutiolla? Sitä että ruutu voisi olla virtuaalisesti eri kokoinen kuin fyysisesti? Tällä hetkellä kaikki ruudulle piirrettävä piirretään ensiksi FBO:n joka sitten piirretään ruudulle. Jos virtuaali resoluutiolla tarkoitat tuota mainitsemaani, niin se olisi varsin helppo tehdä muuttamalla FBO:n kokoa, mutta jättämällä ruutu entiselleen.

Uusien funktioiden luominen on todennäköisesti mahdollista, mutta se varmaankin vaatisi funktion määrittelemistä ensin CB:n puolella ja sitten runtimessa CB:n puolen koodin sijaan suoritettaisiin jotain muuta. Ongelma on lähinnä funktioiden tunnistaminen. Funktioiden tunnusnumerot varmaan menevät järjestyksessä, joten olisi mahdollista tehdä jokin cbEnchanted.cb tiedosto jossa olisi uudet funktiot määriteltyinä (ilman varsinaista koodia), joka pitäisi includen avulla liittää aivan koodin alkuun. Komentorivi parametrin avulla voisi sitten valita oletettaanko uusien funktioiden olevan mukana.

KW voi koittaa korjata minun pahimmat virheet selityksessäni. :lol:
User avatar
Misthema
Advanced Member
Posts: 312
Joined: Mon Aug 27, 2007 8:32 pm
Location: Turku, Finland
Contact:

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Misthema »

Latexi95 wrote:Mitä tarkoitat virtuaalisella resoluutiolla? Sitä että ruutu voisi olla virtuaalisesti eri kokoinen kuin fyysisesti? Tällä hetkellä kaikki ruudulle piirrettävä piirretään ensiksi FBO:n joka sitten piirretään ruudulle. Jos virtuaali resoluutiolla tarkoitat tuota mainitsemaani, niin se olisi varsin helppo tehdä muuttamalla FBO:n kokoa, mutta jättämällä ruutu entiselleen.
Kyllä, juurikin sitä tarkoitan. Se olisi mukava jos sen voisi tehdä muutoin, kuin heittämällä kahta SCREEN-komentoa peräkkäin ja vielä samalla tahtomattaan jättämään fullscreenin kokonaan pois. Toivottavasti FBO ei kärsi blurria tai muuta sellaista kun sen kokoa muutellaan!
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: cbEnchanted - uudelleenkirjoitettu runtime kaipaa kehitt

Post by Latexi95 »

Misthema wrote: Kyllä, juurikin sitä tarkoitan. Se olisi mukava jos sen voisi tehdä muutoin, kuin heittämällä kahta SCREEN-komentoa peräkkäin ja vielä samalla tahtomattaan jättämään fullscreenin kokonaan pois. Toivottavasti FBO ei kärsi blurria tai muuta sellaista kun sen kokoa muutellaan!
No ainakin sen voisi toteuttaa siten, että tekisi kaksi uutta vaihtoehtoa SCREEN komennon "tila" parametriksi. Esimerkiksi "cbWindowTrueSize", jolloin SCREEN komento muuttaisi ikkunan näkyvää kokoa, mutta ei todellista. Ja sitten "cbWindowVirtualSize", joka muuttaisi piirtoalustana toimivan FBO:n kokoa. Sitten ehkä olisi hyväksi, että olisi funktiot WindowTrueWidth ja WindowTrueHeight, joilla saisi ikkunan fyysisen koon käsiinsä, niin pystyisi tarkistamaan ikkunan todellisen koon ruudulla. Perus WindowHeight ja WindowWidth palauttaisivat FBO:n koon.

FBO antaa mahdollisuuden piirtää tekstuuriin, eli FBO:n piirtäminen (mikä on virheellisesti sanottu sillä FBO piirtää tekstuuriin joka piirretään) on sama juttu kuin tekstuurinkin, eli kyllä sen skaalaaminen ruudulle pitäisi tapahtua ihan siististi.

cbE:ssä ei ainakaan tällä hetkellä poisteta mitään grafiikka juttuja SCREENin yhteydessä, sillä se ei ole pakollista.

Aloin juuri puuhaamaan PutPixelin ja GetPixelin parissa. Havaitsin ainakin sellaisen jutun, että lukitsemattomaan kuvaan/ruutuun tehdyt PutPixel/GetPixel operaatiot tulevat todennäköisesti olemaan todella hitaita mikäli niitä käytettään vuoron perään eri kohteisiin, koska OpenGL:n täytyy vaihtaa piirtokontekstia. Lukitun puskurin kanssa vastaavaa ongelmaa ei ole, koska kuva/ruutu on ladattu näytönohjailmelta RAMiin ja sitä käsitellään siellä. Unlockin kohdalla muokattu kuva siirretään takaisin näytönohjailmelle.
Post Reply