X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fselect.cpp;fp=source%2Fselect.cpp;h=e989de4e99b59a931fc18cbd750656240acd513c;hb=7adcad3b40a03000a82e32db4523761c218309b8;hp=0000000000000000000000000000000000000000;hpb=0dee03fed37c5436fe6d18dbca55f78259891823;p=libs%2Fgl.git diff --git a/source/select.cpp b/source/select.cpp new file mode 100644 index 00000000..e989de4e --- /dev/null +++ b/source/select.cpp @@ -0,0 +1,47 @@ +#include +#include "select.h" + +using namespace std; + +namespace Msp { +namespace GL { + +vector *select_buf=0; +vector select_buf_int; + +void select_buffer(vector &buf) +{ + select_buf_int.resize(1024); + glSelectBuffer(select_buf_int.size(), &select_buf_int[0]); + select_buf=&buf; +} + +void parse_select_records(const uint *buf, uint count, vector &tbuf) +{ + uint i=0; + while(count--) + { + SelectRecord record; + + uint n_names=buf[i++]; + record.min_depth=buf[i++]; + record.max_depth=buf[i++]; + + record.names.reserve(n_names); + while(n_names--) + record.names.push_back(buf[i++]); + + tbuf.push_back(record); + } +} + +void _parse_internal_select_records(uint count) +{ + if(!select_buf) + //XXX throw InvalidOperation(); + return; + parse_select_records(&select_buf_int[0], count, *select_buf); +} + +} // namespace GL +} // namespace Msp