From: havoc Date: Wed, 1 Dec 2004 23:19:06 +0000 (+0000) Subject: implemented scr_screenshot_gamma in screenshot saving (previously only implemented... X-Git-Tag: xonotic-v0.1.0preview~5320 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=commitdiff_plain;h=b44705fdf78d86303a002ef75471a966e27a483d;hp=5bdc0879026939f551a3ff217064732d59731be2 implemented scr_screenshot_gamma in screenshot saving (previously only implemented in video saving - oops) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@4817 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/cl_screen.h b/cl_screen.h index 2f1c8e9c..7f705b6f 100644 --- a/cl_screen.h +++ b/cl_screen.h @@ -68,6 +68,7 @@ extern cvar_t vid_conheight; extern cvar_t vid_pixelaspect; extern cvar_t scr_screenshot_jpeg; extern cvar_t scr_screenshot_jpeg_quality; +extern cvar_t scr_screenshot_gamma; extern cvar_t scr_screenshot_name; void CL_Screen_NewMap(void); diff --git a/gl_backend.c b/gl_backend.c index 915abade..950dfc1e 100644 --- a/gl_backend.c +++ b/gl_backend.c @@ -1209,6 +1209,17 @@ qboolean SCR_ScreenShot(char *filename, qbyte *buffer1, qbyte *buffer2, qbyte *b qglReadPixels (x, y, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer1); CHECKGLERROR + if (scr_screenshot_gamma.value != 1) + { + int i; + double igamma = 1.0 / scr_screenshot_gamma.value; + unsigned char ramp[256]; + for (i = 0;i < 256;i++) + ramp[i] = (unsigned char) (pow(i * (1.0 / 255.0), igamma) * 255.0); + for (i = 0;i < width*height*3;i++) + buffer1[i] = ramp[buffer1[i]]; + } + Image_CopyMux (buffer2, buffer1, width, height, flipx, flipy, flipdiagonal, 3, 3, indices); if (jpeg)