00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SHADER_GEOMETRY_HXX
00023 #define SHADER_GEOMETRY_HXX 1
00024
00025 #include <vector>
00026
00027 #include <osg/Array>
00028 #include <osg/BoundingBox>
00029 #include <osg/CopyOp>
00030 #include <osg/Drawable>
00031 #include <osg/Geometry>
00032 #include <osg/RenderInfo>
00033 #include <osg/Vec3>
00034 #include <osg/Vec4>
00035
00036 namespace simgear
00037 {
00038
00039 class ShaderGeometry : public osg::Drawable
00040 {
00041 public:
00042 ShaderGeometry() :
00043 varieties(1)
00044 {
00045 setSupportsDisplayList(false);
00046 }
00047
00048 ShaderGeometry(int v) :
00049 varieties(v)
00050 {
00051 setSupportsDisplayList(false);
00052 }
00053
00055 ShaderGeometry(const ShaderGeometry& ShaderGeometry,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):
00056 osg::Drawable(ShaderGeometry,copyop) {}
00057
00058 META_Object(flightgear, ShaderGeometry);
00059
00060 virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
00061 virtual osg::BoundingBox computeBound() const;
00062
00063 void setGeometry(osg::Geometry* geometry)
00064 {
00065 _geometry = geometry;
00066 }
00067
00068 void addObject(const osg::Vec3& position, float scale, int texture_index);
00069
00070 osg::ref_ptr<osg::Geometry> _geometry;
00071
00072 int varieties;
00073 osg::ref_ptr<osg::Vec4Array> _posScaleArray;
00074 osg::ref_ptr<osg::FloatArray> _vertexAttribArray;
00075
00076 protected:
00077
00078 virtual ~ShaderGeometry() {}
00079 };
00080
00081 }
00082 #endif