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?).
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ä.
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.
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ä.
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.)
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.
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ä.
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.