X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Fprogram.cpp;h=22626c6543674118737df4e1272785f1db6f9a12;hp=0d8e6bd1e2ae09bfbe509c8b07e9bfd42d145219;hb=6f39983060a27634c012f66c82fea0d09fea9774;hpb=3af09f06e9f69532e5adfe6bcd9a7b2d1aea6d5b diff --git a/source/core/program.cpp b/source/core/program.cpp index 0d8e6bd1..22626c65 100644 --- a/source/core/program.cpp +++ b/source/core/program.cpp @@ -400,6 +400,9 @@ void Program::query_uniforms() i->location = glGetUniformLocation(id, i->name.c_str()); i->block = &default_block; default_block.uniforms.push_back(&*i); + + if(is_image(i->type) && i->location>=0) + glGetUniformiv(id, i->location, &i->binding); } default_block.layout_hash = compute_layout_hash(default_block.uniforms); @@ -681,6 +684,12 @@ int Program::get_uniform_location(Tag tag) const return i!=uniforms.end() && i->tag==tag && i->block->bind_point<0 ? i->location : -1; } +int Program::get_uniform_binding(Tag tag) const +{ + vector::const_iterator i = lower_bound_member(uniforms, tag, &UniformInfo::tag); + return i!=uniforms.end() && i->tag==tag ? i->binding : -1; +} + const Program::AttributeInfo &Program::get_attribute_info(const string &name) const { vector::const_iterator i = lower_bound_member(attributes, name, &AttributeInfo::name); @@ -724,7 +733,8 @@ Program::UniformInfo::UniformInfo(): array_size(0), array_stride(0), matrix_stride(0), - type(VOID) + type(VOID), + binding(-1) { }