]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/tgdb/ShaderGeometry.hxx
Only disable display lists if using VBOs.
[simgear.git] / simgear / scene / tgdb / ShaderGeometry.hxx
index 78eb1d4f75f1fbb47b09bbf78bd1198dc59b57e4..30c72fbe0d3092a5f64d278f6d2ab054fcfb5ada 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <vector>
 
+#include <osg/Array>
 #include <osg/BoundingBox>
 #include <osg/CopyOp>
 #include <osg/Drawable>
@@ -38,41 +39,43 @@ namespace simgear
 class ShaderGeometry : public osg::Drawable
 {
     public:
-        ShaderGeometry()
-        { 
-          setUseDisplayList(false); 
+        ShaderGeometry() :
+          varieties(1)
+        {
+                setSupportsDisplayList(false);
+        }
+
+        ShaderGeometry(int v) :
+          varieties(v)
+        {
+                setSupportsDisplayList(false);
         }
         
         /** Copy constructor using CopyOp to manage deep vs shallow copy.*/
         ShaderGeometry(const ShaderGeometry& ShaderGeometry,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):
             osg::Drawable(ShaderGeometry,copyop) {}
 
-        META_Object(osg,ShaderGeometry);
-        
-        typedef std::vector<osg::Vec4> PositionSizeList;
-        
+        META_Object(flightgear, ShaderGeometry);
+
         virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
         virtual osg::BoundingBox computeBound() const;
-    
         
         void setGeometry(osg::Geometry* geometry)
         {
             _geometry = geometry;
         }
         
-    void addTree(const osg::Vec3& position, float scale)
-        {
-            _trees.push_back(osg::Vec4(position, scale));
-        }
-        
+    void addObject(const osg::Vec3& position, float scale, int texture_index);
+
         osg::ref_ptr<osg::Geometry> _geometry;
 
-        PositionSizeList _trees;
+        int varieties;
+        osg::ref_ptr<osg::Vec4Array> _posScaleArray;
+        osg::ref_ptr<osg::FloatArray> _vertexAttribArray;
 
     protected:
     
         virtual ~ShaderGeometry() {}
-        
 };
 
 }