namespace GL {
Immediate::Immediate(VertexFormat f):
- array(f),
- in_batch(false),
- n_vertices(0)
+ PrimitiveBuilder(array),
+ array(f)
{ }
-void Immediate::begin(PrimitiveType t)
+void Immediate::end_()
{
- type=t;
- in_batch=true;
- n_vertices=0;
- builder=array.modify();
-}
-
-void Immediate::end()
-{
- builder=0;
-
array.apply();
- glDrawArrays(type, 0, n_vertices);
+ glDrawArrays(type, 0, array.size());
array.clear();
- in_batch=false;
-}
-
-void Immediate::vertex_(float x, float y, float z, float w)
-{
- if(!in_batch)
- throw InvalidState("Vertex specification not between begin and end");
-
- builder->texcoord(ts, tt, tr,tq);
- builder->color(cr, cg, cb, ca);
- builder->normal(nx, ny, nz);
- builder->vertex(x, y, z, w);
-
- ++n_vertices;
}
} // namespace GL