rendered paste bodyvoid screenshot(char *filename){ SDL_Surface *image = SDL_CreateRGBSurface(SDL_SWSURFACE, scr_w, scr_h, 24, 0x0000FF, 0x00FF00, 0xFF0000, 0); if(!image) return; uchar *tmp = new uchar[scr_w*scr_h*3]; glPixelStorei(GL_PACK_ALIGNMENT, 1); glReadPixels(0, 0, scr_w, scr_h, GL_RGB, GL_UNSIGNED_BYTE, tmp); uchar *dst = (uchar *)image->pixels; loopi(scr_h) { memcpy(dst, &tmp[3*scr_w*(scr_h-i-1)], 3*scr_w); endianswap(dst, 3, scr_w); dst += image->pitch; } delete[] tmp; if(!filename[0]) { static string buf; s_sprintf(buf)("screenshot_%d.bmp", lastmillis); filename = buf; } SDL_SaveBMP(image, filename); SDL_FreeSurface(image);}