]> git.tdb.fi Git - libs/gl.git/blob - source/mesh.cpp
Add class MeshBuilder
[libs/gl.git] / source / mesh.cpp
1 /* $Id$
2
3 This file is part of libmspgl
4 Copyright © 2007  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include "mesh.h"
9
10 using namespace std;
11
12 namespace Msp {
13 namespace GL {
14
15 Mesh::Mesh():
16         vertices(NODATA)
17 {
18         vertices.use_vertex_buffer();
19 }
20
21 Mesh::Mesh(VertexFormat f):
22         vertices(f)
23 {
24         vertices.use_vertex_buffer();
25 }
26
27 RefPtr<MeshBuilder> Mesh::modify()
28 {
29         return new MeshBuilder(*this);
30 }
31
32 void Mesh::add_batch(const Batch &b)
33 {
34         batches.push_back(b);
35 }
36
37 void Mesh::draw() const
38 {
39         vertices.apply();
40         for(list<Batch>::const_iterator i=batches.begin(); i!=batches.end(); ++i)
41                 i->draw();
42 }
43
44
45 Mesh::Loader::Loader(Mesh &m):
46         mesh(m)
47 {
48         add("vertices", &Loader::vertices);
49         add("batch",    &Loader::batch);
50 }
51
52 void Mesh::Loader::vertices(VertexFormat f)
53 {
54         mesh.vertices.reset(f);
55         load_sub(mesh.vertices);
56 }
57
58 void Mesh::Loader::batch(PrimitiveType p)
59 {
60         mesh.batches.push_back(Batch(p));
61         load_sub(mesh.batches.back());
62 }
63
64 } // namespace GL
65 } // namespace Msp