mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
default background alpha should be 0; screenshot should preserve alpha if available
This commit is contained in:
parent
517acbaccb
commit
e05ac10e9d
@ -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)) {
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user