In my program, I call GetDeviceGammaRamp() to read the user's
active gamma settings. Then, if there's not "sufficient" gamma
adjustment, I set my own gamma ramp with SetDeviceGammaRamp().
When the program exits, I restore the ramp I read back from
GetDeviceGammaRamp() on start-up.
Unfortunately, it appears that the device is lieing to me. I
get the data as such:
WORD userRamp[ 768 ];
HDC dc = CreateDC( "DISPLAY", 0, 0, 0 );
GetDeviceGammaRamp( dc, userRamp );
What ends up happening is that I always get back some "default"
gamma ramp with a little bit of compensation; I apply my own
ramp, and then on shutdown I set the ramp "back" to some very
low gamma setting.
If I go into my display control panel settings and crank the
gamma way up (both "game gamma" and "desktop gamma"), then
starting my program will still retrieve the same "default" gamma
ramp, apply its ramp (which is dimmer), and on shutdown, set the
screen to a very dim setting.
This is on a Radeon 9700, though I've heard similar problems
from users with nVIDIA hardware as well.
What's going on?
/ h+
--
If you believe you can succeed
Or if you believe you cannot
You are right.
|