X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fimmediate.cpp;h=15d3a634a13248063efd29c2f5889fff7110c120;hb=df6f8f1f26b1f230dcb1d626d278c43fd48d468d;hp=8b62d2c4cc9cb6c3cee1d8b6f42a23d719490f95;hpb=0f3ae7cf6aed59f07895dfbef6740be3b666fc20;p=libs%2Fgl.git diff --git a/source/immediate.cpp b/source/immediate.cpp index 8b62d2c4..15d3a634 100644 --- a/source/immediate.cpp +++ b/source/immediate.cpp @@ -5,6 +5,7 @@ Copyright © 2007 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ +#include "batch.h" #include "immediate.h" namespace Msp { @@ -13,17 +14,31 @@ namespace GL { Immediate::Immediate(VertexFormat f): PrimitiveBuilder(array), array(f) -{ } +{ + array.use_vertex_buffer(0); +} -void Immediate::end_() +void Immediate::reset() { - array.apply(); - glDrawElements(type, indices.size(), UNSIGNED_INT, &indices[0]); + if(in_batch) + throw InvalidState("Can't reset Immediate between begin() and end()"); array.clear(); +} + +void Immediate::begin_() +{ indices.clear(); } +void Immediate::end_() +{ + Batch batch(type); + batch.append(indices); + array.apply(); + batch.draw(); +} + void Immediate::element_(unsigned i) { indices.push_back(i);