Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ongelma kuvan tulostuksessa SDL

jorre [29.11.2012 19:48:36]

#

Eli minulla olisi sellainen yksinkertainen ongelma SDL:ssä, etten saa millään lataamaani kuvaa näkymään, vaikka teen täysin kuten kaikissa ohjeissa neuvotaan. Itse kuvaruutu toimii ongelmitta, mutta kuva vaan ei tulostu. Käytän Visual studio C++ 2010, ja tässä on koodi:

#include "SDL.h";
int main( int argc, char* args[] )
{SDL_Surface *naytto=NULL;
SDL_Surface *kuva=NULL;
SDL_Init(SDL_INIT_EVERYTHING);
naytto = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
kuva=SDL_LoadBMP("Test.bmp");
SDL_BlitSurface(kuva,NULL,naytto,NULL);
SDL_Flip(naytto);
SDL_Delay(2000);
SDL_FreeSurface(kuva);
SDL_Quit;
return 0;
}

Ja kuva Test.bmp on projektin Debug-kansiossa.

Spongi [29.11.2012 21:14:49]

#

Kuvatiedosto ei luultavasti ole samassa paikassa kuin mistä ohjelma ajetaan, joten se ei löydä sitä. Kokeile käynnistää ohjelma suoraan exe-tiedostosta ja tarkista että kuva on samassa paikassa.

vesikuusi [29.11.2012 21:31:59]

#

Edit. Ohjelma näköjään toimii ilman DOUBLEBUF:a, mutta se pitäisi periaatteessa määrittää koodissa.

#include "SDL.h";
...
SDL_Quit;

Tuossa includessa ei kuuluisi olla puolipistettä...ja SDL_Quit kuuluisi olla funktiokutsu, eli

SDL_Quit ();

Eihän tuo sun koodi edes käänny.

Lisäys: Koodin luettavuus muuten paranee huomattavasti, kun sisentää ja jakaa "kappaleet" oikein.

jorre [30.11.2012 15:58:02]

#

Korjasin vesikuusen huomauttaman ongelman, minkä lisäksi huomasin että ohjelma onnistuu tulostamaan sen kuvan, kunhan käytän itse exe-tiedostoa. Olisiko kuitenkin jotain tapaa millä saisin ohjelman toimimaan myös Debug-tilassa? Tulee nimittäin aikalailla turhaa säätöä, jos joutuu joka välissä kokeilemaan exellä.

Ja teksti on lähinnä itseäni varten tarkoitettua tällä hetkellä, niin en ole "turhassa" harjoitustiedostossa kiinnittänyt moiseen huomiota.

Metabolix [30.11.2012 16:11:09]

#

Kuvan ei pitäisi olla Debug-hakemistossa vaan siinä ylempänä (projektin päähakemistossa), jolloin kaikki toimii Visual C++:n puolelta suoraan. Kun joskus haluat ajaa suoraan exe-tiedoston (tai esim. teet pakettia levitettäväksi), se pitää siirtää samaan paikkaan. Ideana on, että ohjelmasta voi kehitysvaiheessa tehdä eri versioita (Debug, Release jne.), jotka käyttävät samoja tiedostoja.

jorre [30.11.2012 18:52:05]

#

Juu, siirsin oikeaan kansioon ja nyt toimii. Kiitos erittäin paljon avusta!

Vastaus

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

Tietoa sivustosta