Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB: Millä nopeaa 2d grafiikkaa? (dx, opengl, bitblt ...)

Sivun loppuun

Puhveli [17.02.2005 18:14:53]

#

Tavoitteenani on tehdä koko näytössä pyörivä tasopomppu, joten 2D-palikoiden piirto saisi olla aika nopeaa. Itse osaan tehdä 2D-spritejä vain BitBlt:llä, jolloin täytyy piirtää kolme kuvaa (tausta, maski, sprite), ja tällainen tietty etanoi ohjelmaa.
Elikkäs, onnistuisiko DirectX:llä tai OpenGL:llä tai jollakin muulla tuo 2D-spritegrafiikan piirto niin paljon nopeammin, että kannattaisi niitä ruveta opettelemaan? Esimerkiksi niin, että spriteen ei tarvitsisi erikseen kahta kuvaa, vaan että joku väri osattaisiin jättää läpinäkyväksi tms. Fullscreenin kanssa haluaisin saada truecolorin (sen osaan kai tehdä muuten, mutta jos kirjasto tai muu sellainen vaatii saada tehdä sen itse...).

Mulla on vepukasta kutosversio.

Antti Laaksonen [17.02.2005 18:26:36]

#

Blazen mainio DirectX-opas kertoo juuri 2D-grafiikan tekemisestä. Kuvaa ladatessa voi antaa parametrina kuvassa olevan läpinäkyvän värin. Minäkin olen jo pitemmän aikaa suunnitellut kunnollisen tasohyppelyn tekemistä, mutta enpä ole vielä kerennyt edes aloittaa projektia. :)

Puhveli [17.02.2005 18:30:51]

#

Niin, tiedän kyllä että dx:stä ja opengl:stä on vinkkejä ja oppaita ja keskustelua putkassa, mutta kysyisin lähinnä omia gogemuksia siitä, mikä on paras tähän tarkoitukseen, kun en tarvitse mitään effuja tai kuvan venyttämistä tai kierottamista vaan ihan simppelin kuva-kohteeseen-poks -tyylisen menetelmän, ja tuo dx:än käyttäminen tuntuu hankalalta :p

Gaxx [17.02.2005 18:40:58]

#

Oma kokemukseni DX:stä on hyvä. Se on kyllä mielestäni helppokäyttöisempi, kuin joku BitBlt. Sitäpaitsi putkan dx oppaassa on valmiit funktiot, joita voi periaatteessa käyttää suoraan muissakin ohjelmissa.

-Alustat DX:n (oppaassa valmis funktio)
-Lataat kuvat (oppaassa valmis lataus(periaatteessa yksi rivi), funktion joudut tekeemään itse, mutta sen ei pitäisi tuottaa hankaluuksia)
-Piirrä kuva puskuriin (oppaassa valmis funktio)
-Näytä puskuri (yksi rivi)

Sitten lopussa on hyvä tyhjentää muisti roskasta.

Edit: Toki kannattaa muokata funktiot parhaiten omaan käyttöön sopiviksi sitten, kun tietää, mitä missäkin tehdään :)

Antti Laaksonen [17.02.2005 18:42:57]

#

Ei DirectX:n käyttäminen ole todellisuudessa kovinkaan hankalaa. Pitää tosin kirjoittaa pitkä liuta koodia, ennen kuin grafiikkaa edes pääsee piirtämään, mutta tästä ei kannata hämääntyä. Kun perusta on kunnossa, riittää, että kuvat ladataan tekstuureiksi ja ne piirretään näytön päivityksen yhteydessä. Tasohyppelyssäkin voi olla yllättävää hyötyä esim. siitä, että pelihahmon pystyy helposti piirtämään erikokoisena, osittain läpinäkyvänä jne. Minä ainakin varmaan käytän DirectX:ää vastakin peleissäni, ja uskon sen olevan hyvä vaihtoehto myös sinulle.

zigilii [17.02.2005 19:37:30]

#

Tämä kyllä ei liity aiheeseen, en uuttakaan viitsinyt aloittaa. Eli miten saadaan piirrettyä VB:llä suunnikas? Ei millään dx:llä tai muulla vastaavalla vaan esim Line:llä

Metabolix [17.02.2005 19:43:56]

#

Lasket vain kulmapisteiden sijainnit ja vetelet viivoja. Täytön voi tehdä Fill-funktiolla.

Puhveli [17.02.2005 20:20:38]

#

Kiitoksia Antille ja Gaxxille. Luin nyt tuon Blazen oppaan uudestaan kunnolla läpi ja opiskelin siitä tuon initialisoinnin. En tiennyt että DirectX:llä saa osittain läpinäkyviä kuvia, mutta sitä tosiaan kannattaa hyödyntää, ja sillä saa sitäpaitti respektiä. Saas nähdä jos vaikka saisin tämän projektin valmiiksi joskus...

edit: Vielä kalvaa kysymys siitä, että toimiiko vb:llä tehty exe "kaikilla" koneilta, joihin on perus-dx8 asennettu (itseltäni kyllä löytyy), vai pitääkö dx8vb.dll tms asentaa erikseen?

Blaze [17.02.2005 20:43:12]

#

dx8vb.dll on osa DirectX:ää, ja sen omistamiselta ei voi välttyä, jos DX8+ vain on asennettuna.

Puhveli [17.02.2005 21:01:42]

#

Blaze: Hyvä. Kokeilin muuten ajella oppaasi esimerkkiohjelmaa, kun en saanut omaani toimimaan. Ei näkynyt siinäkään mitään (muuta kuin mustaa ikkunassa), mutta ei palauttanut myöskään virhettä. Samoin muita examppeleita joita kokeilin, en saanut toimimaan. Vaatiiko dx8 3d-kortin, minulla ei sitä ole, vai missä on vika?

Blaze [17.02.2005 22:45:57]

#

DX8-grafiikka tosiaan tarvii raudalta jonkunäkösen tuen.

Nappase vaikka huuto.netistä joku halpa kiihytin, ei luulis montaa euroa kustantavan.

Puhveli [21.02.2005 16:08:44]

#

Nää, en taida jaksaa enää päivitellä tätä, ostan sitten kerralla kunnon myllyn :). Taidan sittenkin tehdä BitBlt:llä kun tämmönen pikkupeli ei kuitenkaan niin paljon vaadi. Mut ai hitto tota VB:tä kun vaihtaa ensin resoksi 800 x 600 ja sitten takaisin, niin vb:n designikkuna sotkeutuu täysin.

Blaze [21.02.2005 16:38:53]

#

Puhveli kirjoitti:

Mut ai hitto tota VB:tä kun vaihtaa ensin resoksi 800 x 600 ja sitten takaisin, niin vb:n designikkuna sotkeutuu täysin.

Tuttua. Tuplaklikkaa otsikkopalkkia pari kartaa, niin saa sen takasin normaaliks.

Gaxx [21.02.2005 18:48:04]

#

Blaze kirjoitti:

Puhveli kirjoitti:

Mut ai hitto tota VB:tä kun vaihtaa ensin resoksi 800 x 600 ja sitten takaisin, niin vb:n designikkuna sotkeutuu täysin.

Tuttua. Tuplaklikkaa otsikkopalkkia pari kartaa, niin saa sen takasin normaaliks.

Itse tapaan tehdä ohjelmat ikkunassa ja vasta kun ohjelma on (melkein) valmis, muutan ohjelman toimimaan kokonäytössä, jos se on tarpeen.

Cc [21.02.2005 20:10:54]

#

Kysynpähän tämän kysymyksen tässä vaikka se nytten ei ihan tähän ostikkoon liitykkään mutta en raaski uutta keskusteluakaan aloittaa. Kumpaa on järkevämpi käyttää 2d grafiikan piirton visual basicissä Opengl vai Directx:ää?

Metabolix [21.02.2005 20:30:21]

#

Sitä, jota osaat paremmin / jonka koet helpommaksi.

Puhveli [21.02.2005 20:38:01]

#

Ihan tavallisen kuvan piirtämiseen johonkin kohtaan on myös vb:n perus-PaintPicture, joka on käsittääkseni yhtä nopea kuin muutkin. BitBlt:ssä huomasin, että vbSrcPaint osaa piirtää mustan värin läpinäkyvänä, joten siksi päädyin kuiteskin käyttämään BitBlt:tä. Sitä kun ei tarvi initialisoida mitenkään, vaan pelkkä funkkarin declaroiminen on enough.
edit: Cc et poikennut aiheesta mitenkään, tiivistit vain kysymykseni selkeämmäksi ;)

Metabolix [21.02.2005 20:45:04]

#

Suosittelen vahvasti mitä tahansa muuta kuin BitBltia ja kumppaneita. Kokemuksesta voin kertoa, että vaikka BitBlt:lla tehty pikkupeli pyöriikin ihan hyvin nykykoneella, niin jopa pieni graafinen tetris, jonka tausta ja palikat piirretään joka kerta uudestaan, on melkoisen tökkivä alle 500MHz koneella. Olen kokeillut. Vastaava peli DirectX:lle portattuna pyöriikin kauniisti yli 200 fps.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta