cbSDL v.0.20 - Nopeampaa grafiikkaa

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

cbSDL v.0.20 - Nopeampaa grafiikkaa

Post by KilledWhale »

cbSDL v.0.20
Kuten projektin nimikin kertoo kyseessä on SDL-wrapperi CoolBasicille. Tällä hetkellä cbSDL sisältää peruskomennot 2d grafiikkaan, mutta mahdollisesti tulevaisuudessa 3d-tuki voidaan saada mukaan OpenGL tuen avulla. Vaikka dll-kutsut syövätkin suuren osan SDL:n nopeudesta ero CoolBasicin valmiisiin komentoihin on kuitenkin huomattava (vai hoitaako cb 512 * 512 kuvan pyörityksen reaaliajassa?). Alunperin projekti käytti Marcoderin dll komentoja, mutta ylimääräisten funktiokutsujen välttämiseksi ja lisätehon saamiseksi jätin sen pois alkuvaiheissa. Mainittakoon vielä varalta niille jotka eivät tiedä, että SDL on nopea ja yksinkertainen kirjasto grafiikan piirtoon.

Projektin dll on mahdollista kääntää oman mielen mukaan, jolloin voi saada ylimääräiset tarkistukset pois virheistä jne. jolloin huonommilla koneilla nopeutta säästyy taas vähän. Myös piirtokomennot tai kuvakomennot voi jättää halutessaan pois.
KilledWhale wrote:Koska suunnitellun demoprojektin toteutus venyy julkaisen projektin cb puolen jo nyt.
Paketti sisältää cbSDL.dll ja muut tarvittavat dll:t
cbSDL.cb on varsinainen projekti joka pitää includettaa ja SDL_testi on esimerkkiohjelma joka on ladattavissa ensimmäisestä viestistä.
dll on kaikilla ominaisuuksillä käännetty (input, gfx ja image) ja sisältää myös virheilmoitukset (hieman hitaampi kuin ilman virheitä mutta saa kelvata)
Lataa:
http://up.servut.us/dl/11143.ikg8

Tällä hetkellä projektissa on valmiina seuraavat komennot:

Code: Select all

// Lasku (molemmat hoidetaan cb puolella ilman dll ja on tehty vain helpottamaan elämää
SDL_FPS()
SDL_MamRGBA()

// Yleinen
SDL_Init()
SDL_Quit()

// Piirto
SDL_Circle()
SDL_Box()
SDL_Triangle()
SDL_Line()
SDL_Ellipse()

// Ikkuna
SDL_Screen()
SDL_SetWindow()
SDL_DrawScreen()

// Kuvat
SDL_LoadImage()
SDL_DrawImage()
SDL_DeleteImage()
SDL_RotateImage()
SDL_ImageWidth() (toimii myös näytölle)
SDL_ImageHeight() (toimii myös näytölle)
SDL_Lock()
SDL_Unlock()
SDL_GetPixel()
SDL_SetPixel()
SDL_AlphaImage()
SDL_MaskImage()
SDL_DrawImageBox()

// Syötteet
SDL_KeyDown()
SDL_MouseX()
SDL_MouseY()
SDL_MouseDown()
// Teksti
SDLTTF_Init()
SDLTTF_LoadFont()
SDLTTF_Text()

// Eventit
SDL_PollEvent()
Changelog:

Code: Select all

//////////////////////////////////////////////////////////////////
v.0.20
- SDL_DrawImageBox()
- SDLTTF_Init()
- SDLTTF_LoadFont()
- SDLTTF_Text()
- SDL_PollEvent
v.0.10
-Dll mahdollista kääntää debug -ominaisuuksilla tai ilman (ilman luonnollisesti hieman nopeampi)
-Dll mahdollista kääntää ilman piirtokomentoja
-Dll mahdollista kääntää ilman kuvakomentoja
-Suurin osa komennoista sisältää nyt virheilmoitukset debugatessa
-Ensimmäinen demo julkaistu
////////////////////////////
v.0.02
-Lisätty SDL_Line()
-Lisätty SDL_Ellipse()
-Lisätty SDL_AlphaImage()
-Lisätty SDL_MaskImage()
-Lisätty SDL_MouseX()
-Lisätty SDL_MouseY()
-Lisätty SDL_MouseDown()
////////////////////////////
v.0.01
-Changelog aloitettu
Lataa versio 0.20
http://killedwhale.jouluserver.com/cbSD ... se%202.zip

C++ lähdekoodit:
http://killedwhale.jouluserver.com/cbSDL%20-%20c++.zip

Lisäksi tarvitset ainakin:
SDL
SDL_gfx
SDL_image (vaatii toimiakseen tiff, zlib, libpng ja libjpeg)
SDL_ttf

Jos haluat jättää joitain toimintoja pois dll:stä avaa cbSDL.h ja muuta haluamasi seuraavista:
#define IMAGE 1 // Kuvat
#define GFX 1 // Piirtokomennot
#define DEBUG 1 // Virheentarkistukset mukana tai ei (ilman hieman nopeampaa)
#define INPUT 1 // Syötteet
#define EVENT 1 // SDL_Eventit
#define TTF 1 // Fontit ja tekstin piirto
Last edited by KilledWhale on Mon Nov 10, 2008 5:33 pm, edited 8 times in total.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: cbSDL v.0.10

Post by JATothrim »

Aivan Mahtava. :shock: Hyvä, KilledWhale! tälle tulee pakostakin käyttöä!! :D
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by Harakka »

Ohhoh. Tätä on jo odotettu, aika monta kertaa valitettu mahdottomaksi :D Tiedossa iloista testailua vanhojen efektien ym. parissa. Tosin pikselikomennoissa DLL-kutsut saattavat vähentää hyötyä aika paljon? Läpinäkyvyys vaikuttaa lupaavalta ja nyt onnistuvat aika paljon kätevämmin pyörivät karttasysteemit. Isot kiitokset.

EDIT: Jaa, ei vielä ladattavissa. Pöh. :P
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by Ilmuri »

Eikös jostain SDL:n lisäkirjastoista löydy trifilleri ja rotozoomeri? Olisiko mahdollista ahtaa ainakin trifilleri mukaan?
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

Tosin pikselikomennoissa DLL-kutsut saattavat vähentää hyötyä aika paljon?
Jep, aiemmin testatessa koko ruudun piirtoon pikseli kerrallaan meni ~10sekuntia ja vaikka kaikki pikselit ladottiin taulukkoon se ei paljoa nopeuttanut.
Olisiko mahdollista ahtaa ainakin trifilleri mukaan?
On jo mukana ;)
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by Ilmuri »

KilledWhale wrote:
Olisiko mahdollista ahtaa ainakin trifilleri mukaan?
On jo mukana ;)
No onpa taas tyhmä olo. Kyseessä lienee yksiväriset kolmiot?
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

Ilmuri wrote:
KilledWhale wrote:
Olisiko mahdollista ahtaa ainakin trifilleri mukaan?
On jo mukana ;)
No onpa taas tyhmä olo. Kyseessä lienee yksiväriset kolmiot?
Kyllä.

Tosiaan toiveita komentoihin voi sanella jo nyt niin pyrin laittamaan ne julkaistavaan versioon mukaan.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by Dande »

Mitenkäs onnistuit DLL:n funktiolla piirtämään CoolBasicin ikkunaan? Tai jos tuo testin ikkuna SDL:n luoma, niin minne piilotit CB:n oman?
Hyvältähän tuo näyttää. Olisit tosin voinut valita portattavaksi jonkun laitteistokiihdytetyn kirjaston, kuten vaikka SFML.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

Galgoneer wrote:Mitenkäs onnistuit DLL:n funktiolla piirtämään CoolBasicin ikkunaan? Tai jos tuo testin ikkuna SDL:n luoma, niin minne piilotit CB:n oman?
Hyvältähän tuo näyttää. Olisit tosin voinut valita portattavaksi jonkun laitteistokiihdytetyn kirjaston, kuten vaikka SFML.
CB-ikkunan otsikoksi laitetaan jotain tyyliin "himepleaz" jonka jälkeen se piilotetaan ja luodaan uusi sdl ikkuna päälle. Yritän vielä selvittää parempaa tapaa asian hoitamiseksi mutta siihen saakka tämä saa kelvata :P
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by tuhoojabotti »

tuleeko tähän tulevaisuudessa myös ei pikselöityneet piirto komennot, sana ei nyt muistu mieleen, joku antialiasointi yms. :P
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
kezzzu

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by kezzzu »

Hmm, voisi mahdollisesti toimia myös tällä kepposella (D3D apihookilla) :
http://www.gamedev.net/community/forums ... _id=493024
http://www.gamedev.net/community/forums ... _id=359794

Eli jätät normaalisti cb:n ruudun taustalle fullscreen modelle ja koukutat sdl , opengl tai mitä vaan päälle ;D jos oikein tajusin..

Jos oon väärässä soveltuvuudesta tähän projektiin niin korjatkaa mun tietoja.

Kezzzu
kezzzu

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by kezzzu »

Ja vielä tämä unohtui:
http://www.codeguru.com/Cpp/W-P/dll/hoo ... .php/c127/

eli kun teet wrapperiin tuon niin pitäs toimia ehkä ^^

btw en osaa sitten pätkääkään ohjelmoida. JA kirjaimellisesti

Kezzzu
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

kezzzu wrote:Hmm, voisi mahdollisesti toimia myös tällä kepposella (D3D apihookilla) :
http://www.gamedev.net/community/forums ... _id=493024
http://www.gamedev.net/community/forums ... _id=359794

Eli jätät normaalisti cb:n ruudun taustalle fullscreen modelle ja koukutat sdl , opengl tai mitä vaan päälle ;D jos oikein tajusin..

Jos oon väärässä soveltuvuudesta tähän projektiin niin korjatkaa mun tietoja.

Kezzzu
kezzzu wrote:Ja vielä tämä unohtui:
http://www.codeguru.com/Cpp/W-P/dll/hoo ... .php/c127/

eli kun teet wrapperiin tuon niin pitäs toimia ehkä ^^

btw en osaa sitten pätkääkään ohjelmoida. JA kirjaimellisesti

Kezzzu
Lueskelen nuo läpi koulun jälkeen ja katson jos hookkaaminen on mahdollista. En ole ihan varma miten SDL-pinnan saisi directx ikkuunaan mutta katsotaan. :P

Kiitos linkeistä kuitenkin
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by vilQuri »

Todella hienoa! Jos saisi tuon SDL_MIxer lisäkirjaston ahdattua mukaan niin voisi tehdä kaupallisiakin pelejä musiikeilla :mrgreen: .
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by temu92 »

Ei voi ilman fmodin lisenssin ostamista, sillä cb:n käännetyssä exe tiedostossa on silti vieläkin fmodin dll pakattuna mukaan. Sitäpaitsi Audiere on ainakin imo parempi kun SDL_Mixer.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

temu92 wrote:Ei voi ilman fmodin lisenssin ostamista, sillä cb:n käännetyssä exe tiedostossa on silti vieläkin fmodin dll pakattuna mukaan. Sitäpaitsi Audiere on ainakin imo parempi kun SDL_Mixer.
Senhän voi aina poistaa :D
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Aavesoturi
Active Member
Posts: 163
Joined: Fri Aug 31, 2007 7:07 pm
Location: Helsinki
Contact:

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by Aavesoturi »

Tämä on mielenkiintoista. Just pari päivää ennen ku julkaisit tuon ni mietiskelin että pitäiskö kokeilla tehä joku grafiikka wrapperi cb:lle. Tänään sitten testasin ja tein freebasicilla opengl wrapperi dll:n. Se ei tosin osaa tällä hetkellä muuta kun luoda ikkunan ja piirrellä viivoja (+pari muuta käskyä). Lähinnä nopeutta halusin testata ja alustavat testit oli aika masentavia:

Testi: 4000 random viivaa 800*600 ikkunassa
cb:n piirtokomennot: 120ms
cbgl DLL: >500ms

Kokeilin sitten piruuttani mitä luvut on pelkällä fb:llä:
fb:n piirtokomennot: n. 32ms
fb opengl moodissa: n. 2ms
fb opengl:ssä, viivat antialiasoituina ja blendattuina: n. 8ms

Nuo tulokset kyllä näyttää että eniten aikaa kuluu selvästi DLL-kutsuihin, joten päätin sitten kokeilla ilman Marcoderin dll kirjastoa, kun tossa ekassa postissakin sanottiin että se syö aikaa.
Tulos: cbgl 50ms, eli nopeus yli kymmenkertaistu ku tiputti marcoderin kirjaston pois!

Uteliaisuudesta haluasin tietää kuinka kauan tuolta cbSDL:ltä menee tuohon samaan testiin, eli 4000 viivaa.
(Niin ja ps, on kyllä kamalaa kikkailua tuo parametrien välitys dll:ille)
(PPS, vois kokeilla piruuttaan Irrlichtin wrappaamista :P )
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

Omalla koneellani (intel pentium 3 ~800mhz, 512ram) aikaa kului noin 400ms ilman marcoderin kirjastoa.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by TheFish »

Entä jos antaisit testi ohjelman aavesoturille, niin saisi samalla kokoonpanolla nuo luvut?
CoolBasic henkilökuntaa
Kehittäjä
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: cbSDL v.0.10 - Nopeampaa grafiikkaa

Post by KilledWhale »

Tässä olisi testiohjelma http://up.servut.us/11142.i62g46j

Ohjelma piirtää 4000 viivaa ja errorittaa siihen kuluneen ajan.
Kaikki halukkaat sanokoon tuloksensa
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Post Reply