OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Multisample.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 #ifndef OSG_MULTISAMPLE
15 #define OSG_MULTISAMPLE 1
16 
17 
18 #include <osg/GL>
19 #include <osg/StateAttribute>
20 #include <osg/ref_ptr>
21 
22 
23 #ifndef GL_ARB_multisample
24 #define GL_MULTISAMPLE_ARB 0x809D
25 #define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E
26 #define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F
27 #define GL_SAMPLE_COVERAGE_ARB 0x80A0
28 #define GL_SAMPLE_BUFFERS_ARB 0x80A8
29 #define GL_SAMPLES_ARB 0x80A9
30 #define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA
31 #define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB
32 #define GL_MULTISAMPLE_BIT_ARB 0x20000000
33 #endif
34 #ifndef GL_NV_multisample_filter_hint
35 #define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534
36 #endif
37 
38 
39 namespace osg {
40 
43 {
44  public :
45 
46  enum Mode
47  {
48  FASTEST = GL_FASTEST,
49  NICEST = GL_NICEST,
50  DONT_CARE = GL_DONT_CARE
51  };
52 
53  Multisample();
54 
56  Multisample(const Multisample& trans,const CopyOp& copyop=CopyOp::SHALLOW_COPY):
57  StateAttribute(trans,copyop),
58  _coverage(trans._coverage),
59  _invert(trans._invert),
60  _mode(trans._mode) {}
61 
62  META_StateAttribute(osg, Multisample,MULTISAMPLE);
63 
65  virtual int compare(const StateAttribute& sa) const
66  {
67  // check the types are equal and then create the rhs variable
68  // used by the COMPARE_StateAttribute_Parameter macros below.
70 
71  // compare each parameter in turn against the rhs.
75 
76  return 0; // passed all the above comparison macros, must be equal.
77  }
78 
79  void setSampleCoverage(float coverage, bool invert)
80  {
81  _coverage = coverage;
82  _invert = invert;
83  }
84  inline void setCoverage(float coverage) { _coverage=coverage; }
85  inline float getCoverage() const { return _coverage; }
86 
87  inline void setInvert(bool invert) { _invert=invert; }
88  inline bool getInvert() const { return _invert; }
89 
90  inline void setHint(Mode mode) { _mode = mode; }
91  inline Mode getHint() const { return _mode; }
92 
93  virtual void apply(State& state) const;
94 
95  protected :
96 
97  virtual ~Multisample();
98 
99  float _coverage;
100  bool _invert;
102 };
103 
104 }
105 
106 #endif
107 
108 
109 
void setHint(Mode mode)
Definition: Multisample.h:90
#define OSG_EXPORT
Definition: Export.h:43
#define COMPARE_StateAttribute_Types(TYPE, rhs_attribute)
float getCoverage() const
Definition: Multisample.h:85
bool getInvert() const
Definition: Multisample.h:88
void setSampleCoverage(float coverage, bool invert)
Definition: Multisample.h:79
void setCoverage(float coverage)
Definition: Multisample.h:84
#define META_StateAttribute(library, name, type)
Definition: AlphaFunc.h:19
virtual int compare(const StateAttribute &sa) const
Definition: Multisample.h:65
#define COMPARE_StateAttribute_Parameter(parameter)
void setInvert(bool invert)
Definition: Multisample.h:87
Multisample(const Multisample &trans, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Definition: Multisample.h:56
Mode getHint() const
Definition: Multisample.h:91