]> git.tdb.fi Git - libs/gl.git/commitdiff
Record texture bindings on older OpenGL versions
authorMikko Rasa <tdb@tdb.fi>
Fri, 14 Jul 2023 20:35:12 +0000 (23:35 +0300)
committerMikko Rasa <tdb@tdb.fi>
Fri, 14 Jul 2023 20:35:12 +0000 (23:35 +0300)
source/backends/opengl/program_backend.cpp

index a4e2958b74e0632aad7b0b58a1f49e7a6648b7e1..279d857f81f5ede2bd818217252602e2812f4857 100644 (file)
@@ -188,13 +188,14 @@ void OpenGLProgram::add_glsl_stages(const GlslModule &mod, const map<string, int
                        glUseProgram(id);
                for(const auto &kvp: tex_bindings)
                {
-                       int location = static_cast<const Program *>(this)->get_uniform_location(kvp.first);
-                       if(location>=0)
+                       auto i = lower_bound_member(rd.uniforms, Tag(kvp.first), &ReflectData::UniformInfo::tag);
+                       if(i!=rd.uniforms.end() && i->location>=0)
                        {
                                if(ARB_separate_shader_objects)
-                                       glProgramUniform1i(id, location, kvp.second);
+                                       glProgramUniform1i(id, i->location, kvp.second);
                                else
-                                       glUniform1i(location, kvp.second);
+                                       glUniform1i(i->location, kvp.second);
+                               i->binding = kvp.second;
                        }
                }
        }