Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Grafiikka piirto yleisesti

Sivun loppuun

mika132 [29.02.2012 00:44:01]

#

Eli olen tässä miettinyt, että onko mitään opasta olemassa, mikä opastaa C++ grafiikan piirtoa. Tämä tuli mieleeni tuosta grafiikka kisasta kun taannoin oli. Esim grafiikka ohjelmalle annettaisi kuva ja se piirtäisi esim täysin mustat alueet hienolla nurmikolla ja harmaat alueet hienolla asfaltilla ja punaiset täplät puulla esim. Ihan vain mielenkiinnosta tälläistä mietin. Ja kyllähän se helpottaisi pelin tiedosto kokoja? Jos olisi musta harmaa punaisia kuvia ja pelin käynnistyessä kartat vasta piirretään niin kyllähän siitä etuja saadaan(ko?).

ankzilla [29.02.2012 01:28:14]

#

Jos nyt aivan oikein ymmärsin, niin nopeusetuja siinä ei ainakaan saada. Kuvan tutkiminen pikseli pikseliltä on hidasta. Pelin koossa saatettaisiin säästää jokin merkityksetön määrä.

Metabolix [29.02.2012 09:38:20]

#

Kyllä sillä voisi säästää paketissa hyvinkin merkittävästi, jos on todella tarkoitus käyttää suuria karttoja, joissa kuitenkin kelpaa aika pienen tekstuurin toistaminen. Tuohan nyt ei mitään ihmeitä vaadi:

for (int y = 0; y < kartta->h; ++y) {
	for (int x = 0; x < kartta->w; ++x) {
		vari = hae_pikseli(kartta, x, y);
		tekstuuri = valitse_tekstuuri(vari);
		vari = hae_pikseli(tekstuuri, x % tekstuuri->w, y % tekstuuri->h);
		piirra_pikseli(kartta, x, y, vari);
	}
}

Väitän, että useimpiin asioihin ei mitään erityisiä grafiikkaoppaita tarvita. Tämäkin ongelma ratkesi ihan yksinkertaisella ohjelmointitaidolla ja jakojäännöksen tuntemisella. Yksittäisistä grafiikkatekniikoista voi usein lukea Wikipediasta tai etsiä Googlella lisätietoa.

tkok [29.02.2012 10:44:38]

#

Metabolix kirjoitti:

Väitän, että useimpiin asioihin ei mitään erityisiä grafiikkaoppaita tarvita. Tämäkin ongelma ratkesi ihan yksinkertaisella ohjelmointitaidolla ja jakojäännöksen tuntemisella. Yksittäisistä grafiikkatekniikoista voi usein lukea Wikipediasta tai etsiä Googlella lisätietoa.

Olen samaa mieltä, että lähes kaikki grafiikkaongelmat ratkeavat myös prosessoripuolella. Väitän kuitenkin että tässä saavutettaisiin nopeusetua, jos käytettäisiin suoraan näytönohjaimen nopeitä rinnakkaisia tekstuurin käsittelyyn tarkoitettuja käskyjä.

Metabolix [29.02.2012 10:55:56]

#

tkok kirjoitti:

Väitän kuitenkin että tässä saavutettaisiin nopeusetua, jos käytettäisiin suoraan näytönohjaimen nopeitä rinnakkaisia tekstuurin käsittelyyn tarkoitettuja käskyjä.

Varmasti, mutta sinänsä "grafiikkaopas" ei ole mikään ratkaisu siihen, ettei osaa ratkaista alkeellisia ohjelmointiongelmia. Grafiikkaoppaissa käsitellään paljon hienompia asioita, joiden soveltaminen tälle tasolle vaatii luultavasti enemmän ymmärrystä kuin ongelman ratkaiseminen suoraan prosessoripuolelta. (Sitä paitsi mika132 muistaakseni käyttää pelkkää SDL:ää, joten hienoista kiihdytysoppaista ei ole hänelle hyötyä. Ensin pitäisi osata OpenGL:n perusteet aika hyvin.)

mika132 [29.02.2012 11:31:40]

#

Kinnostuinkin grafiikka moottorien ohjelmoinnista juuri siksi kun OpenGL opsikelu on alkanut ja yksi tiimistämme tuota harjoitellut jo puolisen vuotta.

Eikös lumi ja vesi efektit toimi grafiikka moottorin kautta? Ajattelin, että miten tälläinen edes yleisesti toteutetaan. En ole ihan kärryillä Grafiikka moottorista, millään tasolla.

User137 [29.02.2012 12:09:27]

#

No valmiin pelin tekemiseen ei *välttämättä* tarvita mitään moottoreita. Kasoilla käskyjä voit piirtää ihan mitä tahansa. Nämä moottorit on sitä varten että koodarin työ helpottuu, kun asiat on loogisesti jäsennelty aihepiireittäin. Partikkeliengine voi erikoistua partikkeleiden käsittelemiseen ja piirtämiseen, eli sen tarvitsee vain liikuttaa niitä, ja piirtää liuta tekstuurineliöitä.

Sampe [01.03.2012 18:22:33]

#

Hieman ohi ketjun otsikosta, mutta aiheeseen liittyen:

Henkilökohtaisesti olen sitä mieltä, että jos haluaa tehdä pelin, niin kannattaa ehdottomasti käyttää valmista grafiikkamoottoria tai vielä mieluummin valmista pelimoottoria (hoitaa myös esim. fysiikat, äänet, ym.). Jos aikoo koodata itse kaiken alusta alkaen, niin projekti räjähtää äkkiä käsiin ja kaikki aika kuluu matalan tason ongelmien ratkaisuun eikä varsinaiseen pelin tekemiseen.

Tilannehan on tietenkin aivan eri, jos pääasiallisena tarkoituksena on opiskella näitä matalan tason grafiikkatoteutuksia.

Kannattaa tutustua esimerkiksi Unityyn (http://unity3d.com/), joka tarjoaa sekä pelimoottorin että graafisen kehitysympäristön. Ohjelmointi onnistuu scriptien avulla.

tkok [02.03.2012 10:46:27]

#

User137 kirjoitti:

Nämä moottorit on sitä varten että koodarin työ helpottuu, kun asiat on loogisesti jäsennelty aihepiireittäin. Partikkeliengine voi erikoistua partikkeleiden käsittelemiseen ja piirtämiseen, eli sen tarvitsee vain liikuttaa niitä, ja piirtää liuta tekstuurineliöitä.

Lisäisin vielä että moottorit on sitä varten, että pelin tekijän työ helpottuu. Pelimoottori ja työkalut tehdään sitä varten, ettei varsinaisen pelin/kentän/sisällön suunittelijan tarvitse koskea alemman tason koodiin. Karkeasti ajatellen koodari pyrkii pelitalossa koodaamaan itsensä irti projektista tekemällä kaiken koodipuolelta valmiiksi vastaamaan työkalun käyttäjän tarpeita.


Sivun alkuun

Vastaus

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

Tietoa sivustosta