]> git.tdb.fi Git - libs/gl.git/commitdiff
Add Mesh::use_vertex_buffer
authorMikko Rasa <tdb@tdb.fi>
Mon, 19 May 2008 14:42:17 +0000 (14:42 +0000)
committerMikko Rasa <tdb@tdb.fi>
Mon, 19 May 2008 14:42:17 +0000 (14:42 +0000)
Change VertexArray::use_vertex_buffer semantics to allow disabling vertex buffer
Initialize ObjectPass:use_textures in constructor

source/mesh.cpp
source/mesh.h
source/objectpass.cpp
source/vertexarray.cpp

index cba1bf57fdbcd8737183c90d06fb1d9c7a511d51..44005514d97a74deb54fdb339d42436b5f74ed0a 100644 (file)
@@ -14,14 +14,18 @@ namespace GL {
 
 Mesh::Mesh():
        vertices(NODATA)
-{
-       vertices.use_vertex_buffer();
-}
+{ }
 
 Mesh::Mesh(VertexFormat f):
        vertices(f)
+{ }
+
+void Mesh::use_vertex_buffer(bool b)
 {
-       vertices.use_vertex_buffer();
+       if(b)
+               vertices.use_vertex_buffer();
+       else
+               vertices.use_vertex_buffer(0);
 }
 
 RefPtr<MeshBuilder> Mesh::modify()
index 2a5ce47476a61807cccec7c4566ec5eb3ade322d..8e1f906cf2dcbbd89ecb9c556a721991b7899b1a 100644 (file)
@@ -39,6 +39,8 @@ private:
 public:
        Mesh();
        Mesh(VertexFormat f);
+
+       void use_vertex_buffer(bool);
        RefPtr<MeshBuilder> modify();
        const VertexArray &get_vertices() const { return vertices; }
        void add_batch(const Batch &b);
index 92864b45a39f3f26055f1b4af1c7cc6651051299..afb9f45d96b7209bb9dd63dab6e3b91229e89fdb 100644 (file)
@@ -16,7 +16,8 @@ namespace GL {
 
 ObjectPass::ObjectPass():
        shprog(0),
-       shdata(0)
+       shdata(0),
+       use_textures(true)
 { }
 
 ObjectPass::~ObjectPass()
index c0ca8dca80f22b96f1efdfe8f9de6ccd9dc04ffd..0d4fd919cffa8daa210c416414024357a07d9d59 100644 (file)
@@ -33,18 +33,22 @@ VertexArray::~VertexArray()
 
 void VertexArray::use_vertex_buffer()
 {
-       if(vbuf) return;
+       if(vbuf && own_vbuf)
+               return;
 
        vbuf=new VertexBuffer();
        own_vbuf=true;
+
        update_data();
 }
 
 void VertexArray::use_vertex_buffer(VertexBuffer *b)
 {
-       if(vbuf) return;
-
+       if(own_vbuf)
+               delete vbuf;
        vbuf=b;
+       own_vbuf=false;
+
        update_data();
 }