mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 19:08:55 -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();
|
window->make_current();
|
||||||
|
|
||||||
PixelBuffer p(x_size, y_size, 3, 1, PixelBuffer::T_unsigned_byte,
|
int components = 3;
|
||||||
PixelBuffer::F_rgb);
|
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());
|
RenderBuffer buffer = gsg->get_render_buffer(get_screenshot_buffer_type());
|
||||||
if (!gsg->copy_pixel_buffer(&p, this, buffer)) {
|
if (!gsg->copy_pixel_buffer(&p, this, buffer)) {
|
||||||
|
@ -82,7 +82,7 @@ GraphicsOutput(GraphicsPipe *pipe, GraphicsStateGuardian *gsg,
|
|||||||
|
|
||||||
switch (background_color.get_num_words()) {
|
switch (background_color.get_num_words()) {
|
||||||
case 1:
|
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;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
@ -90,7 +90,7 @@ GraphicsOutput(GraphicsPipe *pipe, GraphicsStateGuardian *gsg,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
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;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
|
@ -881,21 +881,21 @@ set_background_type(WindowFramework::BackgroundType type) {
|
|||||||
case BT_black:
|
case BT_black:
|
||||||
_display_region_3d->set_clear_color_active(true);
|
_display_region_3d->set_clear_color_active(true);
|
||||||
_display_region_3d->set_clear_depth_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);
|
_display_region_3d->set_clear_depth(1.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BT_gray:
|
case BT_gray:
|
||||||
_display_region_3d->set_clear_color_active(true);
|
_display_region_3d->set_clear_color_active(true);
|
||||||
_display_region_3d->set_clear_depth_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);
|
_display_region_3d->set_clear_depth(1.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BT_white:
|
case BT_white:
|
||||||
_display_region_3d->set_clear_color_active(true);
|
_display_region_3d->set_clear_color_active(true);
|
||||||
_display_region_3d->set_clear_depth_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);
|
_display_region_3d->set_clear_depth(1.0f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user