SampleMaski 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. #ifndef OSG_SAMPLEMASKI
  14. #define OSG_SAMPLEMASKI 1
  15. #include <osg/StateAttribute>
  16. namespace osg {
  17. /**
  18. * osg::SampleMaski does nothing if OpenGL 3.2 or ARB_texture_multisample are not available.
  19. */
  20. class OSG_EXPORT SampleMaski : public StateAttribute
  21. {
  22. public :
  23. SampleMaski();
  24. /** Copy constructor using CopyOp to manage deep vs shallow copy.*/
  25. SampleMaski(const SampleMaski& sampleMaski,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
  26. META_StateAttribute(osg, SampleMaski, SAMPLEMASKI)
  27. /** return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.*/
  28. virtual int compare(const StateAttribute& sa) const;
  29. inline void setMask(unsigned int mask, unsigned int maskNumber = 0u ) { _sampleMask[maskNumber] = mask; }
  30. inline unsigned int getMask(unsigned int maskNumber = 0u) const { return _sampleMask[maskNumber]; }
  31. virtual void apply(State& state) const;
  32. protected:
  33. virtual ~SampleMaski();
  34. //For now support only up to 64 bit mask;
  35. unsigned int _sampleMask[2];
  36. };
  37. }
  38. #endif