Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Windows & 3D opettelu

Sivun loppuun

pipo [07.02.2009 19:47:51]

#

Olen ymmärtänyt että erityisesti Windows tukee DirectX:ää. Toimiiko OpenGL jotenkin huonommin Windowsissa kuin muissa järjestelmissä tai toimiiko OpenGL jotenkin huonommin Windowsissa kuin DirectX? Miten voin tarkistaa OpenGL:n toimintakunnon kun käytössäni on Windows?

Viittaan keskusteluun, jonka jälkeen latasin päivitysohjelman joka ilmoitti mitään päivittämättä että "Up to date". Muutama netistä lataamani ohjelma on kuitenkin ilmoittanut että olisi syytä tarkistaa OpenGL -versio.

Voisko joku viisaampi verrata DirectX:ää ja OpenGL:ää niinku opiskelutarkotuksessa Windows -käyttäjälle. Ainakin tuntuisi että OpenGL:stä löytyy parempaa opetusmateriaalia.

Metabolix [08.02.2009 01:50:41]

#

DirectX luonnollisesti toimii Windowsissa tavallaan taatummin, kun kyseessä on Microsoftin tuote. Itse en kuitenkaan ole koskaan törmännyt OpenGL:n kanssa ongelmiin. Sen tuki taas on ajureiden kirjoittajien (eli näytönohjainten valmistajien) vastuulla. Jos haluat tavoittaa teoksillasi suuremman yleisön, valitse OpenGL, koska se toimii muissakin järjestelmissä (Linuxilla ja Macilla), mitä taas ei voi sanoa DX:stä. Tietenkin tällöin täytyy valita myös muut kirjastot käyttöjärjestelmäriippumattomasti.

OpenGL on vain grafiikkakirjasto, DirectX on myös paljon muuta (DirectSound, DirectPlay jne.). Puhutaan nyt kuitenkin vain Direct3D:stä. Näillä kahdella on useimpiin asioihin hyvin erilainen lähestymistapa. OpenGL:ssä asiat tehdään funktioilla, DirectX taas on oliopohjainen järjestelmä. Kukin pitää omastaan, itse pidän OpenGL:stä (sekä ohjelmointitavan että käyttöjärjestelmävalintani takia). OpenGL on toistaiseksi pysynyt muuttumattomana sikäli, että nykyisillä versioilla toimivat samat koodit kuin vuosia sitten. DirectX sen sijaan vetää joka version myötä kaiken uusiksi, joten siinä ainakin pysyy mieli virkeänä.

Hyviä pelejä tehdään molemmilla, mutta itse en paljonkaan pääse Linuxissa DX-peleistä nauttimaan ja siksi suosittelenkin OpenGL:ää. ;)

Toiminnan voit testata tietenkin hankkimalla jonkin OpenGL-pelin. Jos toimii, luultavasti toimii kokonaan (siinä määrin, kuin näytönohjain tukee uudempia ominaisuuksia).

Jalmari91 [08.02.2009 15:51:36]

#

Mutta ei siitä haittaakaan ole, jos opettelee molemmista ainakin perusteet. Sitten voi katsoa kummasta pitää enemmän ja harjoittelee sitä sitten enemmän.

punppis [08.02.2009 16:25:48]

#

Jos työkseen haluaa joskus pelejä tehdä, niin väistämättä on D3D paras ratkaisu. Voisin vaikka väittää, että 90% uusista peleistä on tehty D3D:llä.

pipo [08.02.2009 23:10:09]

#

Metabolix kirjoitti:

Direct3D

Juu niinhän mä justiin sanoinkin.

punppis kirjoitti:

Jos työkseen haluaa joskus pelejä tehdä..

En missään nimessä, mutta ethän sä musta puhunutkaan :)

Onko mielipiteistä vaihtoehtoisista 3d apeista esim Java 3D, tms? Vai puhutaanko sitten ihan eri asioista?

Metabolix [08.02.2009 23:30:10]

#

pipo kirjoitti:

Onko mielipiteistä vaihtoehtoisista 3d apeista esim Java 3D, tms? Vai puhutaanko sitten ihan eri asioista?

Joo, se on ihan eri asia, mutta ehdottomasti tässä keskustelussa kannattaakin kääntyä myös hieman noihin päin.

DX ja OGL ovat ainoat todelliset vaihtoehdot. Mainitsemasi Java 3D on rajapinta, joka käyttää sisäisesti jompaakumpaa näistä (ilmeisesti siitä on oma versio kummallekin). En tunne Java 3D:n ominaisuuksia, mutta yleisesti voidaan sanoa, että tavallista polygonimallia hienompi grafiikka (hyvä valaistus, varjot, efektit) vaatii DX:llä ja OGL:lla niin paljon työtä, että harrastelijalle jää vain kolme realistista vaihtoehtoa:

  1. Aina voi tyytyä yksinkertaiseen grafiikkaan.
  2. Voi ottaa valmiin grafiikkamoottorin ja sopeutua elämään sen kanssa, jolloin ehtii panostaa enemmän projektin muihin osiin. Tästä huolimatta kannattaa hankkia perusymmärrys siitä, mistä se grafiikka oikein tulee, eli vähintään yksi teksturoitu kuutio kannattaa koodata harjoituksena ihan ilman moottoria.
  3. Voi ruveta koodaamaan itse hienompaa grafiikkaa, jolloin suuri osa ajasta meneekin siihen eikä muihin asioihin kuten pelin logiikkaan ja fysiikkaan eikä pelistä tule koskaan valmista. :)

Vuosien varrella viisastuneena (älä vain vilkaise projektiosioon) uskallan jo suositella jompaakumpaa ensimmäisistä vaihtoehdoista, jos tavoitteena on saada aikaan muutakin kuin "jee, voin lennellä 3D-maailmassa seinien läpi".

pipo [09.02.2009 00:58:59]

#

Metabolix kirjoitti:

Aina voi tyytyä yksinkertaiseen grafiikkaan.

Eli tarkoitat sdl:ää tai 2deetä ylipäätään vai kuinka?

Metabolix kirjoitti:

tavallista -- hienompi grafiikka -- vaatii -- niin paljon työtä, että harrastelijalle jää vain kolme realistista vaihtoehtoa

Onko mielestäsi ajan tuhlausta, jos opettelee d3d:tä tai ogl:ää tehdäkseen tavallista (ei tavallista hienompaa) grafiikkaa, jos ei välitä mistään erityisen hienosta valastuksesta yms? Voi kai varjon näköisiä kuvia piirrellä sdl:llä?

Ja eikös 2D kuvienkin piirtely ja animaation esittäminen ole nopeampaa vaikka ogl:llä kuin sdl:llä?

Minusta nuo nehe.gamedev.netin lessonit eivät olleet mitenkään erityisen haastavia, en tosin yrittänytkään oppia ulkoa mitään. En epäile etteikö työmäärä räjähtäisi käsiin kun alkaa tekemään alusta saakka 3d törmäystarkisteluita ja animaatioita ynnä muuta mitä en osaa edes kuvitella.

Metabolix kirjoitti:

Voi ottaa valmiin grafiikkamoottorin ja sopeutua elämään sen kanssa

Tätä kakkosvaihtoehtoa olen käyttänyt tähän saakka vaikka olenkin vielä aikalailla tossa sopeutumisvaiheessa. Itteä juurikin ei kiinnosta

Metabolix kirjoitti:

ruveta koodaamaan itse hienompaa grafiikkaa...

vaan lopputulos.

Tilannetta voisi kai verrata siten, että aloittaessani taloni rakentamista alkaisin ensimmäiseksi suunnittelmemaan minkä muotoisia naulojen kannat ovat. Onhan ne jo joku suunnitellut.

Jos kerta "ehdottomasti tässä keskustelussa kannattaakin kääntyä myös hieman" muihin rajapintoihin, suosittelisitko jotain muita kuin Java 3Deetä?

Metabolix [09.02.2009 01:40:13]

#

pipo kirjoitti:

Metabolix kirjoitti:

Aina voi tyytyä yksinkertaiseen grafiikkaan.

Eli tarkoitat sdl:ää tai 2deetä ylipäätään vai kuinka?

En, vaan 3D-grafiikkaa ilman hienoja valoja, varjoja ja efektejä, eli toisin sanoen tavallisia 3D-malleja enintään verteksikohtaisella spottivalolla valaistuna ilman mitään kummempia tarkistuksia siitä, onko valon ja objektin välissä jotain. Teksturoitu malli ilman valoja on vielä kohtalaisen yksinkertainen, siitä eteenpäin alkaa mutkikkuus kasvaa paljon nopeammin.

Metabolix kirjoitti:

tavallista -- hienompi grafiikka -- vaatii -- niin paljon työtä, että harrastelijalle jää vain kolme realistista vaihtoehtoa

pipo kirjoitti:

Onko mielestäsi ajan tuhlausta, jos opettelee d3d:tä tai ogl:ää tehdäkseen tavallista (ei tavallista hienompaa) grafiikkaa, jos ei välitä mistään erityisen hienosta valastuksesta yms?

Ei, kuten jo aiemmassa viestissäni totesin. Sen sijaan hienon grafiikan tekeminen on tavallaan ajanhukkaa, jos sen opettelu ei ole pääasiallinen tavoite.

pipo kirjoitti:

Voi kai varjon näköisiä kuvia piirrellä sdl:llä?

Puhumme nyt hieman eri asioista. Tarkoitan varjoja, jotka muodostetaan hahmojen todellisen muodon ja mahdollisesti muuttuvan valaistuksen mukaan kuten oikeissa peleissä. Edes ns. blob-varjon saaminen kohdalleen ei välttämättä ole triviaalia.

pipo kirjoitti:

Ja eikös 2D kuvienkin piirtely ja animaation esittäminen ole nopeampaa vaikka ogl:llä kuin sdl:llä?

Toki, paitsi jos laitteisto ei tuota tue. Nykyään tosin kaikki tukevat.

pipo kirjoitti:

Minusta nuo nehe.gamedev.netin lessonit eivät olleet mitenkään erityisen haastavia, en tosin yrittänytkään oppia ulkoa mitään.

Kaikki kunnia NeHen tutoriaaleille, mutta suoraan sanoen niiden koodin taso on amatöörimaista eikä niissä ole erityisesti pyritty siihen, että koodia voisi tosielämässä käyttää. On aivan toista tehdä teksturoitu kuutio, jonka verteksit ja tekstuurikoordinaatit on kirjoitettu suoraan koodiin, kuin kirjoittaa edes mielivaltaisia, teksturoituja malleja piirtävä moottorinpala, joka lataa ne ja määrätyt tekstuurit tiedostosta järkevässä formaatissa.

pipo kirjoitti:

Jos kerta "ehdottomasti tässä keskustelussa kannattaakin kääntyä myös hieman" muihin rajapintoihin, suosittelisitko jotain muita kuin Java 3Deetä?

En ole ehtinyt paljonkaan viime aikoina koodata, joten en ole vielä kokeillut näitä, mutta OGRE ja Irrlicht vaikuttavat lupaavilta. Lisää on listattu Wikipediassa. Aika monet (valitettavasti?) pyrkivät tekemään kokonaisen pelimoottorin, jolloin on saman tien lyöty lukkoon kaikenlaista muutakin kuin vain grafiikkaominaisuudet.

Jalmari91 [09.02.2009 16:20:46]

#

pipo kirjoitti:

Minusta nuo nehe.gamedev.netin lessonit eivät olleet mitenkään erityisen haastavia, en tosin yrittänytkään oppia ulkoa mitään.

Kun alat tekemään vähänkään monimutkaisempaa peliä OpenGL:llä tai Direct3D:llä/DirectX:llä, niin todennäköisesti huomaat mistä Metabolix puhuu.

Tumpelo [09.02.2009 16:46:07]

#

pipo kirjoitti:

Onko mielipiteistä vaihtoehtoisista 3d apeista esim Java 3D, tms? Vai puhutaanko sitten ihan eri asioista?

Kaikkihan perustuu viime kädessä joko OpenGL:ään tai Direct3D:hen kuten edellä on jo todettu. Edellä myös todettiin että oman grafiikkamoottorin vääntäminen ei kannata, ja se on täysin totta. Javalle yksi erittäin hyvä moottori on Xith3D, joka on nopea, helppo, ja sisältää monipuoliset grafiikanlataukset ja törmäystarkistukset (se käyttää OpenGL:ää). Nykyinen versio on n. kuuden vuoden kehityksen tulos, ja mukana on ollut useita ihmisiä. Tämä jo kertoo sen että ei kannata itse koodata OpenGL:ää tai Direct3D:tä käyttäen muuta kuin ymmärtämisen vuoksi pari harjoitusta, jos oikeasti haluaa jotain saada aikaan.

Jalmari91 [09.02.2009 17:26:07]

#

Tumpelo kirjoitti:

Edellä myös todettiin että oman grafiikkamoottorin vääntäminen ei kannata, ja se on täysin totta.

Itse en ole ihan tätä mieltä, koska joitakin voi kiinnostaa enemmän grafiikkamoottorin koodaus entä kuin pelinteko. Molempien teko voi ollakkin sitten aikaa vievä ja haastava projekti. Mutta jos haluaa tehdä KUNNON pelin, niin silloin kannattaa turvautua valmiiseen grafiikkamoottoriin.

groovyb [09.02.2009 22:25:00]

#

jos haluaa aloittaa opettelun helpolla niin Dark GDK taitaa yksi helpommista 3d härpäkkeistä olla.


Sivun alkuun

Vastaus

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

Tietoa sivustosta