Morjensta vaan kaikille.
Eli ongelmana olisi sellanen että menetän surface datan kun palautan sen.
Eli:
SDL_Surface *libG_Draw::RotateImg(SDL_Surface *img){ Uint32 rmask, gmask, bmask, amask; #if SDL_BYTEORDER == SDL_BIG_ENDIAN rmask = 0xff000000; gmask = 0x00ff0000; bmask = 0x0000ff00; amask = 0x000000ff; #else rmask = 0x000000ff; gmask = 0x0000ff00; bmask = 0x00ff0000; amask = 0xff000000; #endif SDL_Surface *newImg = SDL_CreateRGBSurface(SDL_SWSURFACE, img->w, img->h, 32, rmask, gmask, bmask, amask); SDL_FillRect(newImg, 0, 0xffffff); // putPixel(newImg, 0, 0, getPixel(img, 0, 0)); return newImg; }
... nytten kun piirrän palautetun datan, niin ruutuun ei tule mitään???
Mikä avuksi?
Data on aivan kunnossa, se vain on väärää. Huomannet, että olet asettanut pintaasi myös alfakanavan eli läpinäkyvyyden, jonka arvo tuon täyttösi jälkeen little endian -koneilla (esim. x86) jää nollaksi, eli koko pinta on läpinäkyvä. Lisää väriarvoon vielä kaksi f-kirjainta.
Muista sitten myös vapauttaa luomasi pinta. :)
Niinpä näkyy. Nytten toimii , kiitos paljon. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.