X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogram.cpp;h=8892bcf1ed7861b632c7c0bc5089ed53e61b4756;hb=3f7b09b2e12830eb439889b300f0d6591c4952ac;hp=40a388191e650ef83cb71bc7f3d976027b6b7e80;hpb=02dc3bda81eb0d421670b744c1c56aaf1104d5bf;p=libs%2Fgl.git diff --git a/source/program.cpp b/source/program.cpp index 40a38819..8892bcf1 100644 --- a/source/program.cpp +++ b/source/program.cpp @@ -251,6 +251,7 @@ void Program::link() if(len && strncmp(name, "gl_", 3)) { UniformInfo &info = uniforms[name]; + info.block = 0; info.name = name; info.size = size; info.type = type; @@ -258,13 +259,10 @@ void Program::link() } } - vector blockless_uniforms; - if(is_supported("GL_ARB_uniform_buffer_object")) { glGetObjectParameterivARB(id, GL_ACTIVE_UNIFORM_BLOCKS, &value); count = value; - vector uniforms_in_blocks(uniforms_by_index.size()); for(unsigned i=0; iblock = &info; } vector indices2(indices.begin(), indices.end()); @@ -318,23 +316,15 @@ void Program::link() info.bind_point = info.layout_hash%BufferRange::get_n_uniform_buffer_bindings(); glUniformBlockBinding(id, i, info.bind_point); } - - for(unsigned i=0; ilocation = glGetUniformLocationARB(id, info->name.c_str()); - blockless_uniforms.push_back(info); - } } - else - { - for(UniformMap::iterator i=uniforms.begin(); i!=uniforms.end(); ++i) + + vector blockless_uniforms; + for(UniformMap::iterator i=uniforms.begin(); i!=uniforms.end(); ++i) + if(!i->second.block) { i->second.location = glGetUniformLocationARB(id, i->second.name.c_str()); blockless_uniforms.push_back(&i->second); } - } uniform_layout_hash = compute_layout_hash(blockless_uniforms); }