X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Freflectdata.cpp;fp=source%2Fcore%2Freflectdata.cpp;h=7a141db261f0b032aa3a9800a61079fa5a9162c2;hb=1b23728908f5ec9beb08b2b70737c3903745fddc;hp=0000000000000000000000000000000000000000;hpb=b877c737bc5f759e6da25f886ad965e4a274cf2a;p=libs%2Fgl.git diff --git a/source/core/reflectdata.cpp b/source/core/reflectdata.cpp new file mode 100644 index 00000000..7a141db2 --- /dev/null +++ b/source/core/reflectdata.cpp @@ -0,0 +1,58 @@ +#include +#include +#include +#include "reflectdata.h" + +using namespace std; + +namespace Msp { +namespace GL { + +void ReflectData::update_layout_hash() +{ + string layout_descriptor; + for(const UniformBlockInfo &b: uniform_blocks) + layout_descriptor += format("%d:%x\n", b.bind_point, b.layout_hash); + layout_hash = hash32(layout_descriptor); +} + + +ReflectData::UniformInfo::UniformInfo(): + block(0), + location(-1), + array_size(0), + array_stride(0), + matrix_stride(0), + type(VOID), + binding(-1) +{ } + + +ReflectData::UniformBlockInfo::UniformBlockInfo(): + data_size(0), + bind_point(-1), + layout_hash(0) +{ } + +void ReflectData::UniformBlockInfo::sort_uniforms() +{ + sort(uniforms, [](const UniformInfo *u1, const UniformInfo *u2){ return u1->locationlocation; }); +} + +void ReflectData::UniformBlockInfo::update_layout_hash() +{ + string layout_descriptor; + for(const UniformInfo *u: uniforms) + layout_descriptor += format("%d:%s:%x:%d\n", u->location, u->name, u->type, u->array_size); + layout_hash = hash32(layout_descriptor); +} + + +ReflectData::AttributeInfo::AttributeInfo(): + location(-1), + array_size(0), + type(VOID) +{ } + +} // namespace GL +} // namespace Msp