GetDeviceGammaRamp 调整颜色
我覆盖了一个OpenGL应用程序(c++),这个openGL应用程序使用SetDeviceGammaRamp将桌面的亮度设置为非常高(不知道为什么)。这个应用程序是全屏的,看起来不错,但我的覆盖层非常亮。由于高伽马值,我得到的不是具有正常亮度的橙色,而是黄色。
我想要做的:获取当前设置的伽玛(使用 GetDeviceGammaRamp),然后用它来调整我设置的颜色。
喜欢; glColor4f(r, g, b, a) 变为 glColor4f(r / gamma, g / gamma, b / gamma, a);
因此,如果桌面的亮度非常高,则 rg 和 b 值会更低(更暗),并且看起来应该如此。
我怎样才能做到这一点? GetDeviceGammaRamp 填充表格,如何使用它来修改我的颜色?
谢谢
I overlay an OpenGL application (c++), this openGL application uses SetDeviceGammaRamp to set the brightness of the desktop to very high (dont know why). This application is fullscreen and looks good, but my overlay is very bright. Instead of the orange color with normal brightness, I get yellow because of the high gamma.
What I want to do: Get the gamma that is currently set (using GetDeviceGammaRamp), and then use this to adjust the colors I set.
Like; glColor4f(r, g, b, a) becomes glColor4f(r / gamma, g / gamma, b / gamma, a);
So if the brightness of the desktop is very high, the r g and b values will be lower (darker) and will look like they should.
How can I accomplish this? GetDeviceGammaRamp fills a table, how can I use it to modify my colors?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果可以的话,您最好使用 ARB_framebuffer_sRGB 扩展:
You may be better off just using the ARB_framebuffer_sRGB extension if you can: