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.
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.
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.
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.
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.
Juu, siirsin oikeaan kansioon ja nyt toimii. Kiitos erittäin paljon avusta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.