瀏覽代碼

wgldisplay: Support floating-point window framebuffers on Windows

These are linearized scRGB, and necessary to make Panda work on HDR monitors.
rdb 5 年之前
父節點
當前提交
3f0ff827f3
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9 2
      panda/src/wgldisplay/wglGraphicsStateGuardian.cxx

+ 9 - 2
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;