]> 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 99f2c1e00eeaab36cf09a41684f4c0e158aa6b46..30c72fbe0d3092a5f64d278f6d2ab054fcfb5ada 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <vector>
 
+#include <osg/Array>
 #include <osg/BoundingBox>
 #include <osg/CopyOp>
 #include <osg/Drawable>
@@ -38,9 +39,16 @@ 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.*/
@@ -48,31 +56,26 @@ class ShaderGeometry : public osg::Drawable
             osg::Drawable(ShaderGeometry,copyop) {}
 
         META_Object(flightgear, ShaderGeometry);
-        
-        typedef std::vector<osg::Vec4> PositionSizeList;
-        
+
         virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
         virtual osg::BoundingBox computeBound() const;
-    
         
-        void setGeometry(osg::Drawable* geometry)
+        void setGeometry(osg::Geometry* geometry)
         {
             _geometry = geometry;
         }
         
-    void addTree(const osg::Vec3& position, float scale)
-        {
-            _trees.push_back(osg::Vec4(position, scale));
-        }
-        
-        osg::ref_ptr<osg::Drawable> _geometry;
+    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() {}
-        
 };
 
 }