X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fopengl%2Fprogram_backend.cpp;h=767811802ebf5c10eded6718324f7f1a106f4ab7;hb=282a10854eda602d874e200c8301cf57d6501e81;hp=b902db5f6a99043df53af71632230ff9eed263e1;hpb=f82ef715f0d7e1e7d0b93be4b7b89c8ce6bba40b;p=libs%2Fgl.git diff --git a/source/backends/opengl/program_backend.cpp b/source/backends/opengl/program_backend.cpp index b902db5f..76781180 100644 --- a/source/backends/opengl/program_backend.cpp +++ b/source/backends/opengl/program_backend.cpp @@ -69,11 +69,11 @@ unsigned OpenGLProgram::add_stage(Stage type) case VERTEX: { static Require _req(ARB_vertex_shader); gl_type = GL_VERTEX_SHADER; } break; case GEOMETRY: { static Require _req(ARB_geometry_shader4); gl_type = GL_GEOMETRY_SHADER; } break; case FRAGMENT: { static Require _req(ARB_fragment_shader); gl_type = GL_FRAGMENT_SHADER; } break; - default: throw invalid_argument("Program::add_stage"); + default: throw invalid_argument("OpenGLProgram::add_stage"); } if(stage_ids[type]) - throw invalid_operation("Program::add_stage"); + throw invalid_operation("OpenGLProgram::add_stage"); unsigned stage_id = glCreateShader(gl_type); stage_ids[type] = stage_id; @@ -101,7 +101,7 @@ void OpenGLProgram::add_glsl_stages(const GlslModule &mod, const map stages = compiler.get_stages(); if(stages.empty()) - throw invalid_argument("Program::add_glsl_stages"); + throw invalid_argument("OpenGLProgram::add_glsl_stages"); for(SL::Stage::Type st: stages) { @@ -111,7 +111,7 @@ void OpenGLProgram::add_glsl_stages(const GlslModule &mod, const map &code = mod.get_code(); glShaderBinary(n_stages, used_stage_ids, GL_SHADER_BINARY_FORMAT_SPIR_V, &code[0], code.size()*4); @@ -312,6 +312,14 @@ void OpenGLProgram::query_uniforms() func = &uniform_wrapper; else if(u.type==INT_VEC4) func = &uniform_wrapper; + else if(u.type==UNSIGNED_INT) + func = &uniform_wrapper; + else if(u.type==UINT_VEC2) + func = &uniform_wrapper; + else if(u.type==UINT_VEC3) + func = &uniform_wrapper; + else if(u.type==UINT_VEC4) + func = &uniform_wrapper; else if(u.type==FLOAT_MAT2) func = &uniform_matrix_wrapper; else if(u.type==FLOAT_MAT3) @@ -371,7 +379,7 @@ void OpenGLProgram::query_uniform_blocks(const vectorblock = &info; }