X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogram.cpp;h=d962751994d38fe1e7fd93550bb51a545eaec9f6;hb=3cdcc7f689b3868dd275774b9bd9adb5c436f244;hp=a268850762ef2a78bddd6347fc0de53a1e619eb6;hpb=5767702aa5456b6f52273b9667aebc4ec02961e3;p=libs%2Fgl.git diff --git a/source/program.cpp b/source/program.cpp index a2688507..d9627519 100644 --- a/source/program.cpp +++ b/source/program.cpp @@ -320,6 +320,7 @@ void Program::link() uniforms_by_index[indices[j]]->matrix_stride = values[j]; } + sort(info.uniforms.begin(), info.uniforms.end(), uniform_location_compare); info.layout_hash = compute_layout_hash(info.uniforms); info.bind_point = info.layout_hash%BufferRange::get_n_uniform_buffer_bindings(); glUniformBlockBinding(id, i, info.bind_point); @@ -345,6 +346,11 @@ unsigned Program::compute_layout_hash(const vector &uniform return hash32(layout_descriptor); } +bool Program::uniform_location_compare(const UniformInfo *uni1, const UniformInfo *uni2) +{ + return uni1->locationlocation; +} + string Program::get_info_log() const { GLsizei len = 0;