implement SetGammaRamp on WGL (d1x r1.14)
authorBradley Bell <btb@icculus.org>
Thu, 20 May 2004 02:13:13 +0000 (02:13 +0000)
committerBradley Bell <btb@icculus.org>
Thu, 20 May 2004 02:13:13 +0000 (02:13 +0000)
ChangeLog
arch/ogl/wgl.c

index d49f7cd..d34bfe9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2004-05-19  Matthew Mueller  <donut@dakotacom.net>
 
+       * arch/ogl/wgl.c: implement SetGammaRamp on WGL (d1x r1.14)
+
        * arch/ogl/gr.c, arch/ogl/internal.h, arch/ogl/sdlgl.c,
        arch/ogl/wgl.c, include/ogl_init.h: implement brightness/palette
        effects in OGL using SetGammaRamp, much faster than the hack that
index 5863a66..b728c2d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: wgl.c,v 1.6 2004-05-20 02:04:29 btb Exp $ */
+/* $Id: wgl.c,v 1.7 2004-05-20 02:13:13 btb Exp $ */
 /*
  *
  * opengl platform specific functions for WGL - added by Peter Hawkins
@@ -53,7 +53,8 @@ static int GLSTATE_width,GLSTATE_height;
 static bool GLPREF_windowed;
 
 static HGLRC GL_ResourceContext=NULL;
-//static WORD Saved_gamma_values[256*3];
+static WORD Saved_gamma_values[256 * 3];
+static WORD gammaramp[256 * 3];
 bool OpenGL_Initialize(void);
 void OpenGL_Shutdown(void);
 
@@ -159,7 +160,16 @@ long PASCAL DescentWndProc(HWND hWnd,UINT message,
 
 int ogl_setbrightness_internal(void)
 {
-       return -1; // TODO: not yet implemented
+       int i;
+
+       for (i = 0; i < 256; ++i)
+               gammaramp[i] = min((i + ogl_brightness_r * 4) * 256, 0xffff);
+       for (i = 0; i < 256; ++i)
+               gammaramp[i + 256] = min((i + ogl_brightness_g * 4) * 256, 0xffff);
+       for (i = 0; i < 256; ++i)
+               gammaramp[i + 512] = min((i + ogl_brightness_b * 4) * 256, 0xffff);
+
+       return SetDeviceGammaRamp(hDC, (LPVOID)gammaramp) ? 0 : -1;
 }
 
 void ogl_swap_buffers_internal(void){
@@ -488,7 +498,7 @@ bool OpenGL_Initialize(void)
        // Save our gamma values because we'll probably be changing them,
        // this way we can restore them on exit
 
-//     GetDeviceGammaRamp(hDC,(LPVOID)Saved_gamma_values);
+       GetDeviceGammaRamp(hDC, (LPVOID)Saved_gamma_values);
 
        return true;
 
@@ -517,7 +527,7 @@ void OpenGL_Shutdown(void)
 
        // Restore gamma values
 
-//     SetDeviceGammaRamp(hDC,(LPVOID)Saved_gamma_values);
-       
+       SetDeviceGammaRamp(hDC, (LPVOID)Saved_gamma_values);
+
        ReleaseDC(g_hWnd,hDC);
 }