From 3f0ff827f3e871cdcced3a4708f0844c96d473d1 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 1 May 2020 20:32:20 +0200 Subject: [PATCH] wgldisplay: Support floating-point window framebuffers on Windows These are linearized scRGB, and necessary to make Panda work on HDR monitors. --- panda/src/wgldisplay/wglGraphicsStateGuardian.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/panda/src/wgldisplay/wglGraphicsStateGuardian.cxx b/panda/src/wgldisplay/wglGraphicsStateGuardian.cxx index dc32a1ddcd..77521e2ff3 100644 --- a/panda/src/wgldisplay/wglGraphicsStateGuardian.cxx +++ b/panda/src/wgldisplay/wglGraphicsStateGuardian.cxx @@ -208,6 +208,10 @@ get_properties_advanced(FrameBufferProperties &properties, ivalue_list[green_bits_i], ivalue_list[blue_bits_i], ivalue_list[alpha_bits_i]); + + if (ivalue_list[pixel_type_i] == WGL_TYPE_RGBA_FLOAT_ARB) { + properties.set_float_color(true); + } } if (ivalue_list[double_buffer_i]) { @@ -372,8 +376,11 @@ choose_pixel_format(const FrameBufferProperties &properties, iattrib_list[ni++] = WGL_SUPPORT_OPENGL_ARB; iattrib_list[ni++] = true; - iattrib_list[ni++] = WGL_PIXEL_TYPE_ARB; - iattrib_list[ni++] = WGL_TYPE_RGBA_ARB; + + if (!properties.get_float_color()) { + iattrib_list[ni++] = WGL_PIXEL_TYPE_ARB; + iattrib_list[ni++] = WGL_TYPE_RGBA_ARB; + } if (need_pbuffer) { iattrib_list[ni++] = WGL_DRAW_TO_PBUFFER_ARB;