]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/program_backend.cpp
Rearrange shader reflection calls
[libs/gl.git] / source / backends / opengl / program_backend.cpp
index bd54fbaa788348d2358163759de2549e83afbaf8..d78a5b4206505ee51c9b3ecce1a201579bfe18ee 100644 (file)
@@ -211,7 +211,7 @@ void OpenGLProgram::add_spirv_stages(const SpirVModule &mod, const map<string, i
                        glSpecializeShader(stage_ids[i], j->name.c_str(), spec_id_array.size(), &spec_id_array[0], &spec_value_array[0]);
 }
 
-void OpenGLProgram::finalize(const Module &mod)
+void OpenGLProgram::finalize(const Module &mod, TransientData &transient)
 {
        glLinkProgram(id);
        int status = 0;
@@ -232,6 +232,13 @@ void OpenGLProgram::finalize(const Module &mod)
        if(!info_log.empty())
                IO::print("Program link info log:\n%s", info_log);
 #endif
+
+       if(mod.get_format()==Module::GLSL)
+       {
+               query_uniforms();
+               query_attributes();
+               apply_bindings(transient);
+       }
 }
 
 void OpenGLProgram::query_uniforms()
@@ -312,6 +319,14 @@ void OpenGLProgram::query_uniforms()
                                        func = &uniform_wrapper<int, glUniform3iv>;
                                else if(u.type==INT_VEC4)
                                        func = &uniform_wrapper<int, glUniform4iv>;
+                               else if(u.type==UNSIGNED_INT)
+                                       func = &uniform_wrapper<unsigned, glUniform1uiv>;
+                               else if(u.type==UINT_VEC2)
+                                       func = &uniform_wrapper<unsigned, glUniform2uiv>;
+                               else if(u.type==UINT_VEC3)
+                                       func = &uniform_wrapper<unsigned, glUniform3uiv>;
+                               else if(u.type==UINT_VEC4)
+                                       func = &uniform_wrapper<unsigned, glUniform4uiv>;
                                else if(u.type==FLOAT_MAT2)
                                        func = &uniform_matrix_wrapper<float, glUniformMatrix2fv>;
                                else if(u.type==FLOAT_MAT3)