00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef DRAWABLEREGION_H
00016 #define DRAWABLEREGION_H
00017
00018 #include "pandabase.h"
00019 #include "luse.h"
00020 #include "renderBuffer.h"
00021 #include "typedWritableReferenceCount.h"
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 class EXPCL_PANDA_DISPLAY DrawableRegion {
00034 public:
00035 INLINE DrawableRegion();
00036 INLINE DrawableRegion(const DrawableRegion ©);
00037 INLINE void operator = (const DrawableRegion ©);
00038 virtual ~DrawableRegion();
00039
00040 INLINE void copy_clear_settings(const DrawableRegion ©);
00041
00042 PUBLISHED:
00043
00044
00045
00046 enum RenderTexturePlane {
00047 RTP_stencil=0,
00048 RTP_depth_stencil=1,
00049 RTP_color,
00050 RTP_aux_rgba_0,
00051 RTP_aux_rgba_1,
00052 RTP_aux_rgba_2,
00053 RTP_aux_rgba_3,
00054 RTP_aux_hrgba_0,
00055 RTP_aux_hrgba_1,
00056 RTP_aux_hrgba_2,
00057 RTP_aux_hrgba_3,
00058 RTP_aux_float_0,
00059 RTP_aux_float_1,
00060 RTP_aux_float_2,
00061 RTP_aux_float_3,
00062 RTP_depth,
00063 RTP_COUNT
00064 };
00065
00066 INLINE void set_clear_color_active(bool clear_color_active);
00067 INLINE bool get_clear_color_active() const;
00068
00069 INLINE void set_clear_depth_active(bool clear_depth_active);
00070 INLINE bool get_clear_depth_active() const;
00071
00072 INLINE void set_clear_stencil_active(bool clear_stencil_active);
00073 INLINE bool get_clear_stencil_active() const;
00074
00075 INLINE void set_clear_color(const LColor &color);
00076 INLINE const LColor &get_clear_color() const;
00077
00078 INLINE void set_clear_depth(PN_stdfloat depth);
00079 INLINE PN_stdfloat get_clear_depth() const;
00080
00081 INLINE void set_clear_stencil(unsigned int stencil);
00082 INLINE unsigned int get_clear_stencil() const;
00083
00084 virtual void set_clear_active(int n, bool clear_aux_active);
00085 virtual bool get_clear_active(int n) const;
00086
00087 virtual void set_clear_value(int n, const LColor &clear_value);
00088 virtual const LColor &get_clear_value(int n) const;
00089
00090 virtual void disable_clears();
00091 virtual bool is_any_clear_active() const;
00092
00093 virtual void set_pixel_zoom(PN_stdfloat pixel_zoom);
00094 INLINE PN_stdfloat get_pixel_zoom() const;
00095 INLINE PN_stdfloat get_pixel_factor() const;
00096 virtual bool supports_pixel_zoom() const;
00097
00098 static int get_renderbuffer_type(int plane);
00099
00100 public:
00101 INLINE int get_screenshot_buffer_type() const;
00102 INLINE int get_draw_buffer_type() const;
00103
00104 protected:
00105 INLINE void update_pixel_factor();
00106 virtual void pixel_factor_changed();
00107
00108 protected:
00109 int _screenshot_buffer_type;
00110 int _draw_buffer_type;
00111
00112 private:
00113 bool _clear_active[RTP_COUNT];
00114 LColor _clear_value[RTP_COUNT];
00115
00116 PN_stdfloat _pixel_zoom;
00117 PN_stdfloat _pixel_factor;
00118 };
00119
00120
00121 #include "drawableRegion.I"
00122
00123 #endif