00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SIMGEAR_STATEATTRIBUTEFACTORY_HXX
00023 #define SIMGEAR_STATEATTRIBUTEFACTORY_HXX 1
00024
00025 #include <OpenThreads/Mutex>
00026 #include <osg/ref_ptr>
00027 #include <osg/Array>
00028
00029 namespace osg
00030 {
00031 class AlphaFunc;
00032 class BlendFunc;
00033 class CullFace;
00034 class Depth;
00035 class ShadeModel;
00036 class Texture2D;
00037 class TexEnv;
00038 }
00039
00040 #include <simgear/structure/Singleton.hxx>
00041
00042
00043 namespace simgear
00044 {
00045 class StateAttributeFactory :
00046 public ReferencedSingleton<StateAttributeFactory> {
00047 public:
00048
00049 osg::AlphaFunc* getStandardAlphaFunc() { return _standardAlphaFunc.get(); }
00050
00051 osg::BlendFunc* getStandardBlendFunc() { return _standardBlendFunc.get(); }
00052
00053 osg::TexEnv* getStandardTexEnv() { return _standardTexEnv.get(); }
00054 osg::ShadeModel* getSmoothShadeModel() { return _smooth.get(); }
00055 osg::ShadeModel* getFlatShadeModel() { return _flat.get(); }
00056
00057 osg::Texture2D* getWhiteTexture() { return _whiteTexture.get(); }
00058
00059 osg::Vec4Array* getWhiteColor() {return _white.get(); }
00060
00061 osg::Texture2D* getTransparentTexture()
00062 {
00063 return _transparentTexture.get();
00064 }
00065
00066 osg::CullFace* getCullFaceFront() { return _cullFaceFront.get(); }
00067 osg::CullFace* getCullFaceBack() { return _cullFaceBack.get(); }
00068
00069 osg::Depth* getDepthWritesDisabled() { return _depthWritesDisabled.get(); }
00070 StateAttributeFactory();
00071 protected:
00072 osg::ref_ptr<osg::AlphaFunc> _standardAlphaFunc;
00073 osg::ref_ptr<osg::ShadeModel> _smooth;
00074 osg::ref_ptr<osg::ShadeModel> _flat;
00075 osg::ref_ptr<osg::BlendFunc> _standardBlendFunc;
00076 osg::ref_ptr<osg::TexEnv> _standardTexEnv;
00077 osg::ref_ptr<osg::Texture2D> _whiteTexture;
00078 osg::ref_ptr<osg::Texture2D> _transparentTexture;
00079 osg::ref_ptr<osg::Vec4Array> _white;
00080 osg::ref_ptr<osg::CullFace> _cullFaceFront;
00081 osg::ref_ptr<osg::CullFace> _cullFaceBack;
00082 osg::ref_ptr<osg::Depth> _depthWritesDisabled;
00083 };
00084 }
00085 #endif