Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: DirectX vai OpenGL

Sivun loppuun

Liquid_Vision [11.07.2004 12:14:49]

#

Eli kumpaa kannattais alkaa alotteleen? En ole vielä pahemmin kumpaakaan harjoitellut. Kumpi näistä olisi helpompaa ja onko jompikumpi jotenkin parempi?

rndprogy [11.07.2004 12:28:01]

#

No on OpenGL kyllä helpompaa. Mutta jos haluat parempaa grafiikkaa niin sitten DirectX. OpenGLään löytyy mielestäni enemmän oppaitakin. Ja DirectX:ssa on eri versioita joilla ohjelmoiminen on kullakin vähän erillaista.

firebug [11.07.2004 12:30:54]

#

Kokeile kumpaakin, ja valitse sen mukaan, kummasta pidät enemmän. Jos haluat ohjelmistasi portattavia, kannattaa valita OpenGL. DirectX taitaa sisältää enemmän kaikkea verrattuna OpenGL:ään mm. nettiin ja musiikkiin liittyviä juttuja. Itse en ole siihen tutustunut sen enempää, joten joku korjatkoon jos olen väärässä. Itse ainakin suosittelen OpenGL:ää ja SDL:ää, sillä näillä tehdyistä ohjelmista tulee portattavia ja niiden avulla ohjelmointi ei ole kovin vaikeaa.

EDIT: rndprogy: OpenGL:llä saa tehtyä kyllä yhtä hienoa grafiikkaa kuin DirectX:llä. En sitten tiedä, onko se sillä helpompaa.

sooda [11.07.2004 12:44:57]

#

OpenGL on kyllä helpompaa, mutta mä olen kuullut että dx:ssä on enemmän ominaisuuksia. Monimutkaisempaa mutta monipuolisempaa(?). Ite olen kanssa opettelemassa opengl:ää. Kokeilin dx:ää mutta näytti tosi vaikealta ogliin verrattuna ja tykkään kivoista NeHe:n tutoriaaleista.

peki [11.07.2004 13:03:11]

#

OpenGL:ssä kutsutaan funktioita ilman mitään Direct3DDevice:n kaltaista objektia, jonka funktiolla piirtäminen tms. toteutetaan.
DirectX:ssä jokainen laite(device) pitää alustaa erikseen, ja sinun on luotava vertekseille(kolmion kärkipiste) aina oma tietorakenteensa.
Itse päädyin harkinnan jälkeen DirectX.ään, sillä sen ohjelmointityyli soveltui omaan tyyliini.
Esimerkiksi(kyseiset koodit piirtävät kolmion; OpenGL koodi on vapaasti NeHen tutoriaalia mukaillen; DirectX koodi on vpaasti DrunkenHyenan tutoriaalia mukaillen; Koodit ovat erittäin yksinkertaistettuja ja niistä näkee hieman rajapintojen eroista.):

// DirectX
bool DrawScene()
{
   static tri_vertex fan[]={ //väritetty kolmioviuhka
   {325,300,1,1,0xFFFFFFFF},
   {250,175,1,1,0xFFFF0000},{300,165,1,1,0xFF7F7F00},{325,155,1,1,0xFF00FF00},
   {375,165,1,1,0xFF007F7F},{400,185,1,1,0xFF0000FF}
   };

   g_pDev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,4,fan, sizeof(tri_vertex)
}
// OpenGL
bool DrawScene(GLvoid)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glTranslatef(-1.5f,0.0f,-6.0f);
    glBegin(GL_TRIANGLES);
        glVertex3f( 0.0f, 1.0f, 0.0f);
        glVertex3f(-1.0f,-1.0f, 0.0f);
        glVertex3f( 1.0f,-1.0f, 0.0f);
    glEnd();
    glTranslatef(3.0f,0.0f,0.0f);
    glBegin(GL_QUADS);
        glVertex3f(-1.0f, 1.0f, 0.0f);
        glVertex3f( 1.0f, 1.0f, 0.0f);
        glVertex3f( 1.0f,-1.0f, 0.0f);
        glVertex3f(-1.0f,-1.0f, 0.0f);
    glEnd();
    return true;
}

Edit: Jos joku huomaa koodeissa virheen, niin en pistäisi ilmoitusta pahakseni. En OpenGL:ää enää osaa juuri nimeksikään, joten koodissa saattaa olla virheitä.

Liquid_Vision [11.07.2004 16:00:47]

#

Joo kyllä varmaan rupean tuota OpenGL:ää harjoitteleen. Siis kun joku puhui noista nettiominaisuuksista niin eikö sitten OpenGL:llä pysty tehdä esim. nettipelejä? Vai mitä tarkoititte noilla nettiominaisuuksilla?

Metabolix [11.07.2004 16:52:03]

#

OpenGL on grafiikkakirjasto, vastaava kuin directX:n yksi osat DirectDraw ja Direct3D. DirectX kokonaisuutena taas sisältää lisäksi ääniosan(SirectSound / DirectMusic), verkko-osan (DirectPlay) ja ohjaintenhallinnan (DirectInput).

firebug [11.07.2004 17:18:03]

#

Nettipelin tekemiseen voit käyttää vaikka Winsockia tai SDL Netiä, joka on portattava. Seuraavasta osoitteesta löydät itse paketin sekä dokumentaatiot: http://www.libsdl.org/projects/SDL_net/

Markus [13.07.2004 14:28:58]

#

Lue OpenGL tutoriaalini (OpenGL:n perusteet - osat: 1-3): http://www.suomipelit.com/nayta_artikkelit.php?tyyppi=1

J.Swan [16.07.2004 22:51:39]

#

Mäkin suosittelen tota Markuksen tutoriaalia. Sen avulla on helppo päästä mukaan OpenGL:ään.

Liquid_Vision [20.07.2004 14:49:56]

#

Nyt en oikeastaan tiedä että kumpaa tässä kannattaisi aloitella... DirectX tuntuu olevan monipuolisempi mutta jos nyt alan sitä harjoittelemaan ja sitten joskus vaikka Windows ja Microsoft luhistuvat niin sitten pitäisikin aloittaa taas OpenGL alusta. OpenGL tuntuisi helpommalta ja siihen löytyy enemmän oppaita ja tutoriaaleja(ainakin oman käsitykseni mukaan), mutta minua huolettaa esim. sellaset asiat kuin äänien liittäminen ohjelmiin/peleihin(kaikki hienot 3d äänet ja muut härpäkkeet), nettipelaaminen(millä sen sitten hoitaa..?) ja jos haluaa liittää esim. joystickin tai jotain muita ulkoisia laitteita(DirectInput...) niin miten ne onnistuisi laittamaan.

Sen takia tuota OpenGL:ää aloittaisin koska sen saa kaikille käyttöjärjestelmille. DirectX:n saa vain Windowsille ja jos joskus Windows vaikka luhistuu tai jotain.

Markus [20.07.2004 17:09:47]

#

DirectX on paketti, joka sisältää useita eri rajapintoja, joilla ei ole mitään tekemistä keskenään esim. directSound ääniä varten, direct3D grafiikka varten ja directPlay nettiä varten. Kaikki nämä rajapinnat ovat erilaisia ja ne on opeteltava erikseen! Voit siis huoletta käyttää esim. OpenGL:ää grafiikkaan ja DirectSoundia ääniin.

Kaikille DirectX:n osille (ehkä directInputtia lukuunottamatta) löytyy myös halutessa korvaava (parempi?) vastine. Esim:
Direct3D <--> OpenGL
DirectSound <--> OpenAL
DirectPlayer <--> Winsock

Liquid_Vision [20.07.2004 19:17:59]

#

Juu, ajattelin ehkä kuitenkin sitä OpenGL:ää alkaa harjotteleen. Tuo DirectX on niin Windows-riippuvainen ja tuntuu hankalammalta kuin OpenGL(Direct3D siis).


Sivun alkuun

Vastaus

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

Tietoa sivustosta