Browse Source

glgsg: Only copy depth of 32-bit float depth-stencil framebuffer

We don't support float-32-unsigned-int-24-8 component types in texture yet, so this is the only choice.  Avoids a GL error when binding to RTP_depth_stencil slot.

Fixes case 2 of #1142
rdb 4 years ago
parent
commit
69c6050fa8
1 changed files with 3 additions and 0 deletions
  1. 3 0
      panda/src/glstuff/glGraphicsStateGuardian_src.cxx

+ 3 - 0
panda/src/glstuff/glGraphicsStateGuardian_src.cxx

@@ -7174,7 +7174,10 @@ framebuffer_copy_to_ram(Texture *tex, int view, int z,
   switch (format) {
   switch (format) {
   case Texture::F_depth_stencil:
   case Texture::F_depth_stencil:
     if (_current_properties->get_float_depth()) {
     if (_current_properties->get_float_depth()) {
+      //NB. In the future we may need a T_float_32_unsigned_int_24_8 format, but
+      // for now we'll just try to grab the depth component.
       component_type = Texture::T_float;
       component_type = Texture::T_float;
+      format = Texture::F_depth_component32;
     } else {
     } else {
       component_type = Texture::T_unsigned_int_24_8;
       component_type = Texture::T_unsigned_int_24_8;
     }
     }