Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: SDL ja koodaus tapa

kayttaja-3842 [26.02.2012 12:29:06]

#

Tervehdys kaikki,

Olen törmännyt aikasta jännään ongelmaan SDL:än kanssa. Nimittäin, sen hitaus. Periaattessa tämä muodostuu, jos ohjelmassa prosessoitavia tehtäviä ei jaeta erillisille threadeille.

Eli käytännössä vähänkin isompi peli vaatisi erillisiä threadeja, koska mitä enemmän pelissä on reaaliajassa ajettavia tehtäviä sitä enemmän se vaikuttaa piirto nopeuteen.

Mitä mieltä te olette? Onko pelissä hyvä tapa siirtää prosessointia eli threadeille kuten piiro omalleen jne jne. Vai miten tämä tulisi ratkaista?

Grez [26.02.2012 15:16:18]

#

Kyllähän nykykoneissa on järjestään prosessoreissa useampia ytimiä tai vaikka olisi yksiytiminen niin jotain hyperthreadingiä jne. Eli voisi sanoa, että jos ajaa vain yhtä ohjelmaa jossa on vain yksi säie, niin rahat menee osittain hukkaan.

Mitä tarkoitat "reaaliajassa ajettavilla tehtävillä"? Ne täytyy ajaa nanosekunnilleen oikeaan aikaan, tms? Miten olet sen tällä hetkellä toteuttanut? Windows tai Linux on huonoja käyttäjärjestelmiä reaaliaikaprosesseille. Suosittelen jotain RTOSia.

Metabolix [26.02.2012 19:29:00]

#

SDL:n hitaudella ei ole nähdäkseni mitään tekemistä sen kanssa, onko pelissä yksi vai monta säiettä. SDL on hidas, koska se ei käytä piirtämiseen laitteistokiihdytystä. Tilanteen korjaamiseksi kannattaa ottaa käyttöön joko SDL 1.3 tai SFML, ellei halua koodailla suoraan OpenGL:llä.

Piirtämisen delegointi eri säikeelle ei välttämättä ole aivan helppoa. Mukaan tulee kaikenlaisia mutkikkaita synkronointiasioita.

kayttaja-3842 [26.02.2012 21:50:01]

#

Grez kirjoitti:

Mitä tarkoitat "reaaliajassa ajettavilla tehtävillä"? Ne täytyy ajaa nanosekunnilleen oikeaan aikaan, tms? Miten olet sen tällä hetkellä toteuttanut? Windows tai Linux on huonoja käyttäjärjestelmiä reaaliaikaprosesseille. Suosittelen jotain RTOSia.

Tarkoitan siis realiajassa ajettavia tehtävillä esim. funktioita joita kutsutaan joka kerta main while -loopissa, kuten tekoäly, piirto jne jne...

Metabolix kirjoitti:

SDL:n hitaudella ei ole nähdäkseni mitään tekemistä sen kanssa, onko pelissä yksi vai monta säiettä. SDL on hidas, koska se ei käytä piirtämiseen laitteistokiihdytystä. Tilanteen korjaamiseksi kannattaa ottaa käyttöön joko SDL 1.3 tai SFML, ellei halua koodailla suoraan OpenGL:llä.

Piirtämisen delegointi eri säikeelle ei välttämättä ole aivan helppoa. Mukaan tulee kaikenlaisia mutkikkaita synkronointiasioita.

Aijaa? Itse olen ollut siinä käsityksessä, että SDL:tä on pitkää jo löytynyt laitteisto kiihdytys. Eikös "SDL_HWSURFACE" -flagin pitäisi asettaa laitteisto kiihdytys SDL:ään päälle?

Piirämisen siirtämisestä threadille on tosiaan vaikea homma. Lähinnä tekoäly sun muut voisi siirtää eri säikeille, mutta itse piirrot tulisi toteuttaa main threadilla.

Metabolix [26.02.2012 22:02:16]

#

kayttaja-3842 kirjoitti:

Itse olen ollut siinä käsityksessä, että SDL:tä on pitkää jo löytynyt laitteisto kiihdytys.

SDL saattaa ehkä Windowsilla joissain oloissa käyttää DirectDraw-blittausta, jonka todellisesta hyödyllisyydestä nykyaikana en tiedä. Missään tapauksessa siitä ei ole iloa esimerkiksi pintojen pyörittämisessä tai skaalauksessa.

Vastaus

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

Tietoa sivustosta