00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef FRAMEBUFFERPROPERTIES_H
00016 #define FRAMEBUFFERPROPERTIES_H
00017
00018 #include "pandabase.h"
00019 #include "pnotify.h"
00020
00021
00022
00023
00024
00025
00026
00027 class EXPCL_PANDA_DISPLAY FrameBufferProperties {
00028
00029 private:
00030 enum FrameBufferProperty {
00031
00032 FBP_depth_bits,
00033 FBP_color_bits,
00034 FBP_alpha_bits,
00035 FBP_stencil_bits,
00036 FBP_accum_bits,
00037
00038
00039 FBP_aux_rgba,
00040 FBP_aux_hrgba,
00041 FBP_aux_float,
00042
00043
00044 FBP_multisamples,
00045 FBP_coverage_samples,
00046 FBP_back_buffers,
00047 FBP_indexed_color,
00048 FBP_rgb_color,
00049 FBP_stereo,
00050 FBP_force_hardware,
00051 FBP_force_software,
00052
00053
00054 FBP_COUNT
00055 };
00056
00057 int _property[FBP_COUNT];
00058 int _specified[FBP_COUNT];
00059
00060 PUBLISHED:
00061
00062
00063 INLINE int get_depth_bits() const;
00064 INLINE int get_color_bits() const;
00065 INLINE int get_alpha_bits() const;
00066 INLINE int get_stencil_bits() const;
00067 INLINE int get_accum_bits() const;
00068 INLINE int get_aux_rgba() const;
00069 INLINE int get_aux_hrgba() const;
00070 INLINE int get_aux_float() const;
00071 INLINE int get_multisamples() const;
00072 INLINE int get_coverage_samples() const;
00073 INLINE int get_back_buffers() const;
00074 INLINE int get_indexed_color() const;
00075 INLINE int get_rgb_color() const;
00076 INLINE int get_stereo() const;
00077 INLINE int get_force_hardware() const;
00078 INLINE int get_force_software() const;
00079
00080
00081 INLINE void set_depth_bits(int n);
00082 INLINE void set_color_bits(int n);
00083 INLINE void set_alpha_bits(int n);
00084 INLINE void set_stencil_bits(int n);
00085 INLINE void set_accum_bits(int n);
00086 INLINE void set_aux_rgba(int n);
00087 INLINE void set_aux_hrgba(int n);
00088 INLINE void set_aux_float(int n);
00089 INLINE void set_multisamples(int n);
00090 INLINE void set_coverage_samples(int n);
00091 INLINE void set_back_buffers(int n);
00092 INLINE void set_indexed_color(int n);
00093 INLINE void set_rgb_color(int n);
00094 INLINE void set_stereo(int n);
00095 INLINE void set_force_hardware(int n);
00096 INLINE void set_force_software(int n);
00097
00098
00099
00100 FrameBufferProperties();
00101 INLINE FrameBufferProperties(const FrameBufferProperties ©);
00102 INLINE ~FrameBufferProperties();
00103 void operator = (const FrameBufferProperties ©);
00104 static const FrameBufferProperties &get_default();
00105 bool operator == (const FrameBufferProperties &other) const;
00106 INLINE bool operator != (const FrameBufferProperties &other) const;
00107
00108 void clear();
00109 void set_all_specified();
00110 bool subsumes(const FrameBufferProperties &other) const;
00111 void add_properties(const FrameBufferProperties &other);
00112 void output(ostream &out) const;
00113 void set_one_bit_per_channel();
00114
00115 bool is_stereo() const;
00116 bool is_single_buffered() const;
00117 int get_quality(const FrameBufferProperties &reqs) const;
00118 bool is_any_specified() const;
00119 bool is_basic() const;
00120 int get_aux_mask() const;
00121 int get_buffer_mask() const;
00122 bool verify_hardware_software(const FrameBufferProperties &props, const string &renderer) const;
00123 };
00124
00125 INLINE ostream &operator << (ostream &out, const FrameBufferProperties &properties);
00126
00127 #include "frameBufferProperties.I"
00128
00129 #endif