diff --git a/panda/src/display/displayRegion.cxx b/panda/src/display/displayRegion.cxx index 9e2253298e..9e9663bc9d 100644 --- a/panda/src/display/displayRegion.cxx +++ b/panda/src/display/displayRegion.cxx @@ -525,8 +525,16 @@ get_screenshot(PNMImage &image) { window->make_current(); - PixelBuffer p(x_size, y_size, 3, 1, PixelBuffer::T_unsigned_byte, - PixelBuffer::F_rgb); + int components = 3; + PixelBuffer::Format format = PixelBuffer::F_rgb; + + if ((gsg->get_properties().get_frame_buffer_mode() & FrameBufferProperties::FM_alpha) != 0) { + components = 4; + format = PixelBuffer::F_rgba; + } + + PixelBuffer p(x_size, y_size, components, 1, PixelBuffer::T_unsigned_byte, + format); RenderBuffer buffer = gsg->get_render_buffer(get_screenshot_buffer_type()); if (!gsg->copy_pixel_buffer(&p, this, buffer)) { diff --git a/panda/src/display/graphicsOutput.cxx b/panda/src/display/graphicsOutput.cxx index 3bb6358002..f8b815c04b 100644 --- a/panda/src/display/graphicsOutput.cxx +++ b/panda/src/display/graphicsOutput.cxx @@ -82,7 +82,7 @@ GraphicsOutput(GraphicsPipe *pipe, GraphicsStateGuardian *gsg, switch (background_color.get_num_words()) { case 1: - set_clear_color(Colorf(background_color[0], background_color[0], background_color[0], 1.0f)); + set_clear_color(Colorf(background_color[0], background_color[0], background_color[0], 0.0f)); break; case 2: @@ -90,7 +90,7 @@ GraphicsOutput(GraphicsPipe *pipe, GraphicsStateGuardian *gsg, break; case 3: - set_clear_color(Colorf(background_color[0], background_color[1], background_color[2], 1.0f)); + set_clear_color(Colorf(background_color[0], background_color[1], background_color[2], 0.0f)); break; case 4: diff --git a/panda/src/framework/windowFramework.cxx b/panda/src/framework/windowFramework.cxx index b7c8149eec..1354a6b876 100644 --- a/panda/src/framework/windowFramework.cxx +++ b/panda/src/framework/windowFramework.cxx @@ -881,21 +881,21 @@ set_background_type(WindowFramework::BackgroundType type) { case BT_black: _display_region_3d->set_clear_color_active(true); _display_region_3d->set_clear_depth_active(true); - _display_region_3d->set_clear_color(Colorf(0.0f, 0.0f, 0.0f, 1.0f)); + _display_region_3d->set_clear_color(Colorf(0.0f, 0.0f, 0.0f, 0.0f)); _display_region_3d->set_clear_depth(1.0f); break; case BT_gray: _display_region_3d->set_clear_color_active(true); _display_region_3d->set_clear_depth_active(true); - _display_region_3d->set_clear_color(Colorf(0.3f, 0.3f, 0.3f, 1.0f)); + _display_region_3d->set_clear_color(Colorf(0.3f, 0.3f, 0.3f, 0.0f)); _display_region_3d->set_clear_depth(1.0f); break; case BT_white: _display_region_3d->set_clear_color_active(true); _display_region_3d->set_clear_depth_active(true); - _display_region_3d->set_clear_color(Colorf(1.0f, 1.0f, 1.0f, 1.0f)); + _display_region_3d->set_clear_color(Colorf(1.0f, 1.0f, 1.0f, 0.0f)); _display_region_3d->set_clear_depth(1.0f); break;