.. Ei jostain syystä toimi minulla, vaikka mielestäni olen tehnyt kaikki oikein :<
Voisiko joku kertoa miten se tehdään, itselläni on näin;
png = IMG_Load("data/gfx/tesmi.PNG");
Jos sdl_image-kirjasto on hommassa mukana ja png on tyyppiä SDL_Surface* ja kuvan polku on oikein, pitäisi kyllä toimia.
Niinhän sen pitäs muttakun ei toimi. Itsekkin ihmettelen asiaa, laitoin vielä varmuuden vuoksi näin;
-lmingw32 -lSDLmain -lSDL
../lib/SDL_ttf.lib
../lib/libSDL_Image.a
../lib/libSDL_mixer.dll.a
../lib/dll/lua5.1.lib
../lib/libpng.lib
../lib/libz.a
../lib/libjpeg.dll.a
Lisätääneen vielä että erroreita ei tule, vaan kuva ei näy ja se on NULL
IMG_Load() palauttaa NULLin silloin kun kuvan lataus epäonnistuu jostain syystä. Saat tarkemman virheilmoituksen IMG_GetError()-funktiolla.
png = IMG_Load("data/gfx/tesmi.PNG"); if(png == NULL) printf("kuvan lataus epäonnistui: %s\n", IMG_GetError());
kuvan lataus epäonnistui: SDL_UpperBlit: passed a NULL surface
Että näin. Kuva on olemassa :o
Pitääkös tuo polku windows-puolella ilmoittaa näin: "data\\gfx\\tesmi.PNG"?
TsaTsaTsaa kirjoitti:
Pitääkös tuo polku windows-puolella ilmoittaa näin: "data\\gfx\\tesmi.PNG"?
Ei, / on suositeltavampi. http://www.parashift.com/c -faq-lite/input-output.html#faq-15.16
Ohjelmasi työhakemisto (working dir) ei välttämättä ole sama kuin binaarin hakemisto, jolloin ohjelma etsii kuvaa väärästä paikasta. Tarkista tämä. Kulloinenkin hakemisto selviää käyttöjärjestelmäriippuvaisilla funktiokutsuilla, joita en tähän hätään osaa ulkoa. ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.