Panda3D
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
DrawableRegion Class Reference

This is a base class for GraphicsWindow (actually, GraphicsOutput) and DisplayRegion, both of which are conceptually rectangular regions into which drawing commands may be issued. More...

#include "drawableRegion.h"

Inheritance diagram for DrawableRegion:
DisplayRegion GraphicsOutput RocketRegion StereoDisplayRegion GraphicsBuffer GraphicsWindow ParasiteBuffer eglGraphicsBuffer eglGraphicsPixmap glxGraphicsBuffer glxGraphicsPixmap osxGraphicsBuffer wdxGraphicsBuffer9 wglGraphicsBuffer AndroidGraphicsWindow CallbackGraphicsWindow CocoaGraphicsWindow IPhoneGraphicsWindow osxGraphicsWindow WinGraphicsWindow x11GraphicsWindow

Public Types

enum  RenderTexturePlane {
  RTP_stencil =0, RTP_depth_stencil =1, RTP_color, RTP_aux_rgba_0,
  RTP_aux_rgba_1, RTP_aux_rgba_2, RTP_aux_rgba_3, RTP_aux_hrgba_0,
  RTP_aux_hrgba_1, RTP_aux_hrgba_2, RTP_aux_hrgba_3, RTP_aux_float_0,
  RTP_aux_float_1, RTP_aux_float_2, RTP_aux_float_3, RTP_depth,
  RTP_COUNT
}
 

Public Member Functions

 DrawableRegion (const DrawableRegion &copy)
 
void copy_clear_settings (const DrawableRegion &copy)
 Copies only the clear settings from the other drawable region. More...
 
virtual void disable_clears ()
 Disables both the color and depth clear. More...
 
virtual bool get_clear_active (int n) const
 Gets the clear-active flag for any bitplane. More...
 
const LColor & get_clear_color () const
 
bool get_clear_color_active () const
 Returns the current setting of the flag that indicates whether the color buffer should be cleared every frame. More...
 
PN_stdfloat get_clear_depth () const
 
bool get_clear_depth_active () const
 Returns the current setting of the flag that indicates whether the depth buffer should be cleared every frame. More...
 
unsigned int get_clear_stencil () const
 
bool get_clear_stencil_active () const
 Returns the current setting of the flag that indicates whether the color buffer should be cleared every frame. More...
 
virtual const LColor & get_clear_value (int n) const
 Returns the clear value for any bitplane. More...
 
int get_draw_buffer_type () const
 Returns the RenderBuffer into which the GSG should issue draw commands. More...
 
PN_stdfloat get_pixel_factor () const
 
PN_stdfloat get_pixel_zoom () const
 
int get_screenshot_buffer_type () const
 Returns the RenderBuffer that should be used for capturing screenshots from this particular DrawableRegion. More...
 
virtual bool is_any_clear_active () const
 Returns true if any of the clear types (so far there are just color or depth) have been set active, or false if none of them are active and there is no need to clear. More...
 
void operator= (const DrawableRegion &copy)
 
virtual void set_clear_active (int n, bool clear_aux_active)
 Sets the clear-active flag for any bitplane. More...
 
void set_clear_color (const LColor &color)
 
void set_clear_color_active (bool clear_color_active)
 Toggles the flag that indicates whether the color buffer should be cleared every frame. More...
 
void set_clear_depth (PN_stdfloat depth)
 
void set_clear_depth_active (bool clear_depth_active)
 Toggles the flag that indicates whether the depth buffer should be cleared every frame. More...
 
void set_clear_stencil (unsigned int stencil)
 
void set_clear_stencil_active (bool clear_stencil_active)
 Toggles the flag that indicates whether the stencil buffer should be cleared every frame. More...
 
virtual void set_clear_value (int n, const LColor &clear_value)
 Sets the clear value for any bitplane. More...
 
virtual void set_pixel_zoom (PN_stdfloat pixel_zoom)
 
virtual bool supports_pixel_zoom () const
 Returns true if a call to set_pixel_zoom() will be respected, false if it will be ignored. More...
 

Static Public Member Functions

static int get_renderbuffer_type (int plane)
 Returns the RenderBuffer::Type that corresponds to a RenderTexturePlane. More...
 

Public Attributes

 get_clear_color
 Returns the current clear color value. More...
 
 get_clear_depth
 Returns the current clear depth value. More...
 
 get_clear_stencil
 Returns the current clear stencil value. More...
 
 get_pixel_factor
 Returns the amount by which the height and width of the region will be scaled internally, based on the zoom factor set by set_pixel_zoom(). More...
 
 get_pixel_zoom
 Returns the value set by set_pixel_zoom(), regardless of whether it is being respected or not. More...
 
 set_clear_color
 Sets the clear color to the indicated value. More...
 
 set_clear_depth
 Sets the clear depth to the indicated value. More...
 
 set_clear_stencil
 Sets the clear stencil to the indicated value. More...
 
 set_pixel_zoom
 Sets the amount by which the pixels of the region are scaled internally when filling the image interally. More...
 

Detailed Description

This is a base class for GraphicsWindow (actually, GraphicsOutput) and DisplayRegion, both of which are conceptually rectangular regions into which drawing commands may be issued.

Sometimes you want to deal with a single display region, and sometimes you want to deal with the whole window at once, particularly for issuing clear commands and capturing screenshots.

Definition at line 29 of file drawableRegion.h.

Member Function Documentation

◆ copy_clear_settings()

void DrawableRegion::copy_clear_settings ( const DrawableRegion copy)
inline

Copies only the clear settings from the other drawable region.

Definition at line 66 of file drawableRegion.I.

◆ disable_clears()

void DrawableRegion::disable_clears ( )
virtual

Disables both the color and depth clear.

See set_clear_color_active and set_clear_depth_active.

Reimplemented in StereoDisplayRegion.

Definition at line 72 of file drawableRegion.cxx.

Referenced by StereoDisplayRegion::disable_clears().

◆ get_clear_active()

bool DrawableRegion::get_clear_active ( int  n) const
virtual

Gets the clear-active flag for any bitplane.

Definition at line 43 of file drawableRegion.cxx.

Referenced by get_clear_color_active(), get_clear_depth_active(), and get_clear_stencil_active().

◆ get_clear_color_active()

bool DrawableRegion::get_clear_color_active ( ) const
inline

Returns the current setting of the flag that indicates whether the color buffer should be cleared every frame.

See set_clear_color_active().

Definition at line 89 of file drawableRegion.I.

References get_clear_active().

Referenced by DXGraphicsStateGuardian9::clear(), and DisplayRegion::supports_pixel_zoom().

◆ get_clear_depth_active()

bool DrawableRegion::get_clear_depth_active ( ) const
inline

Returns the current setting of the flag that indicates whether the depth buffer should be cleared every frame.

See set_clear_depth_active().

Definition at line 109 of file drawableRegion.I.

References get_clear_active().

Referenced by DXGraphicsStateGuardian9::clear(), GraphicsOutput::make_stereo_display_region(), and DisplayRegion::supports_pixel_zoom().

◆ get_clear_stencil_active()

bool DrawableRegion::get_clear_stencil_active ( ) const
inline

Returns the current setting of the flag that indicates whether the color buffer should be cleared every frame.

See set_clear_stencil_active().

Definition at line 129 of file drawableRegion.I.

References get_clear_active().

Referenced by DXGraphicsStateGuardian9::clear(), and GraphicsOutput::make_stereo_display_region().

◆ get_clear_value()

const LColor & DrawableRegion::get_clear_value ( int  n) const
virtual

Returns the clear value for any bitplane.

Definition at line 61 of file drawableRegion.cxx.

◆ get_draw_buffer_type()

int DrawableRegion::get_draw_buffer_type ( ) const
inline

Returns the RenderBuffer into which the GSG should issue draw commands.

Normally, this is the back buffer for double-buffered windows, and the front buffer for single-buffered windows.

Definition at line 234 of file drawableRegion.I.

◆ get_renderbuffer_type()

int DrawableRegion::get_renderbuffer_type ( int  plane)
static

Returns the RenderBuffer::Type that corresponds to a RenderTexturePlane.

Definition at line 130 of file drawableRegion.cxx.

◆ get_screenshot_buffer_type()

int DrawableRegion::get_screenshot_buffer_type ( ) const
inline

Returns the RenderBuffer that should be used for capturing screenshots from this particular DrawableRegion.

Definition at line 224 of file drawableRegion.I.

◆ is_any_clear_active()

bool DrawableRegion::is_any_clear_active ( ) const
virtual

Returns true if any of the clear types (so far there are just color or depth) have been set active, or false if none of them are active and there is no need to clear.

Definition at line 83 of file drawableRegion.cxx.

Referenced by x11GraphicsWindow::clear(), and GraphicsOutput::clear().

◆ set_clear_active()

void DrawableRegion::set_clear_active ( int  n,
bool  clear_aux_active 
)
virtual

Sets the clear-active flag for any bitplane.

Reimplemented in StereoDisplayRegion.

Definition at line 29 of file drawableRegion.cxx.

Referenced by StereoDisplayRegion::set_clear_active(), set_clear_color_active(), set_clear_depth_active(), and set_clear_stencil_active().

◆ set_clear_color_active()

void DrawableRegion::set_clear_color_active ( bool  clear_color_active)
inline

Toggles the flag that indicates whether the color buffer should be cleared every frame.

If this is true, the color buffer will be cleared to the color indicated by set_clear_color(); otherwise, it will be left alone.

Definition at line 80 of file drawableRegion.I.

References set_clear_active().

Referenced by GraphicsOutput::make_cube_map().

◆ set_clear_depth_active()

void DrawableRegion::set_clear_depth_active ( bool  clear_depth_active)
inline

Toggles the flag that indicates whether the depth buffer should be cleared every frame.

If this is true, the depth buffer will be cleared to the depth value indicated by set_clear_depth(); otherwise, it will be left alone.

Definition at line 100 of file drawableRegion.I.

References set_clear_active().

Referenced by GraphicsOutput::make_cube_map().

◆ set_clear_stencil_active()

void DrawableRegion::set_clear_stencil_active ( bool  clear_stencil_active)
inline

Toggles the flag that indicates whether the stencil buffer should be cleared every frame.

If this is true, the stencil buffer will be cleared to the value indicated by set_clear_stencil(); otherwise, it will be left alone.

Definition at line 120 of file drawableRegion.I.

References set_clear_active().

Referenced by GraphicsOutput::make_cube_map().

◆ set_clear_value()

void DrawableRegion::set_clear_value ( int  n,
const LColor &  clear_value 
)
virtual

Sets the clear value for any bitplane.

Reimplemented in StereoDisplayRegion.

Definition at line 52 of file drawableRegion.cxx.

Referenced by StereoDisplayRegion::set_clear_value().

◆ supports_pixel_zoom()

bool DrawableRegion::supports_pixel_zoom ( ) const
virtual

Returns true if a call to set_pixel_zoom() will be respected, false if it will be ignored.

If this returns false, then get_pixel_factor() will always return 1.0, regardless of what value you specify for set_pixel_zoom().

This may return false if the underlying renderer doesn't support pixel zooming, or if you have called this on a DisplayRegion that doesn't have both set_clear_color() and set_clear_depth() enabled.

Reimplemented in DisplayRegion.

Definition at line 122 of file drawableRegion.cxx.

Referenced by DisplayRegion::supports_pixel_zoom().

Member Data Documentation

◆ get_clear_color

const LColor & DrawableRegion::get_clear_color
inline

Returns the current clear color value.

This is the value that will be used to clear the color buffer every frame, but only if get_clear_color_active() returns true. If get_clear_color_active() returns false, this is meaningless.

Definition at line 73 of file drawableRegion.h.

Referenced by DXGraphicsStateGuardian9::clear().

◆ get_clear_depth

PN_stdfloat DrawableRegion::get_clear_depth
inline

Returns the current clear depth value.

This is the value that will be used to clear the depth buffer every frame, but only if get_clear_depth_active() returns true. If get_clear_depth_active() returns false, this is meaningless.

Definition at line 77 of file drawableRegion.h.

Referenced by DXGraphicsStateGuardian9::clear().

◆ get_clear_stencil

unsigned int DrawableRegion::get_clear_stencil
inline

Returns the current clear stencil value.

This is the value that will be used to clear the stencil buffer every frame, but only if get_clear_stencil_active() returns true. If get_clear_stencil_active() returns false, this is meaningless.

Definition at line 81 of file drawableRegion.h.

Referenced by DXGraphicsStateGuardian9::clear().

◆ get_pixel_factor

PN_stdfloat DrawableRegion::get_pixel_factor
inline

Returns the amount by which the height and width of the region will be scaled internally, based on the zoom factor set by set_pixel_zoom().

This will return 1.0 if the pixel_zoom was not set or if it is not being respected (for instance, because the underlying renderer doesn't support it –see supports_pixel_zoom).

Definition at line 97 of file drawableRegion.h.

Referenced by GraphicsOutput::get_fb_x_size(), and GraphicsOutput::get_fb_y_size().

◆ get_pixel_zoom

PN_stdfloat DrawableRegion::get_pixel_zoom
inline

Returns the value set by set_pixel_zoom(), regardless of whether it is being respected or not.

Also see get_pixel_factor().

Definition at line 96 of file drawableRegion.h.

◆ set_clear_color

void DrawableRegion::set_clear_color
inline

Sets the clear color to the indicated value.

This is the value that will be used to clear the color buffer every frame, but only if get_clear_color_active() returns true. If get_clear_color_active() returns false, this is meaningless.

Definition at line 73 of file drawableRegion.h.

◆ set_clear_depth

void DrawableRegion::set_clear_depth
inline

Sets the clear depth to the indicated value.

This is the value that will be used to clear the depth buffer every frame, but only if get_clear_depth_active() returns true. If get_clear_depth_active() returns false, this is meaningless.

Definition at line 77 of file drawableRegion.h.

◆ set_clear_stencil

void DrawableRegion::set_clear_stencil
inline

Sets the clear stencil to the indicated value.

This is the value that will be used to clear the stencil buffer every frame, but only if get_clear_color_active() returns true. If get_clear_stencil_active() returns false, this is meaningless.

Definition at line 81 of file drawableRegion.h.

◆ set_pixel_zoom

void DrawableRegion::set_pixel_zoom

Sets the amount by which the pixels of the region are scaled internally when filling the image interally.

Setting this number larger makes the pixels blockier, but may make the rendering faster, particularly for software renderers. Setting this number to 2.0 reduces the number of pixels that have to be filled by the renderer by a factor of 2.0. It doesn't make sense to set this lower than 1.0.

It is possible to set this on either individual DisplayRegions or on overall GraphicsWindows, but you will get better performance for setting it on the window rather than its individual DisplayRegions. Also, you may not set it on a DisplayRegion that doesn't have both clear_color() and clear_depth() enabled.

This property is only supported on renderers for which it is particularly useful–currently, this is the tinydisplay software renderer. Other kinds of renderers allow you to set this property, but ignore it.

Definition at line 96 of file drawableRegion.h.


The documentation for this class was generated from the following files: