]> git.tdb.fi Git - libs/gl.git/blobdiff - source/program.cpp
Mark ProgramBuilder as deprecated
[libs/gl.git] / source / program.cpp
index d8827ab5d0f5f095fed0d53424571aff7147f472..116e16e7251544b902ac7082e32fb82f8c624666 100644 (file)
@@ -32,8 +32,11 @@ Program::Program(const ProgramBuilder::StandardFeatures &features)
 {
        init();
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
        ProgramBuilder builder(features);
        builder.add_shaders(*this);
+#pragma GCC diagnostic pop
        link();
 }
 
@@ -129,7 +132,6 @@ void Program::link()
                        (*i)->compile();
 
        uniforms.clear();
-       legacy_vars = false;
 
        glLinkProgram(id);
        linked = get_program_i(id, GL_LINK_STATUS);
@@ -144,6 +146,26 @@ void Program::link()
 
        query_uniforms();
        query_attributes();
+
+       for(UniformMap::const_iterator i=uniforms.begin(); i!=uniforms.end(); ++i)
+               require_type(i->second.type);
+       for(AttributeMap::const_iterator i=attributes.begin(); i!=attributes.end(); ++i)
+               require_type(i->second.type);
+}
+
+void Program::require_type(GLenum t)
+{
+       switch(t)
+       {
+       case GL_FLOAT_MAT2x3:
+       case GL_FLOAT_MAT2x4:
+       case GL_FLOAT_MAT3x2:
+       case GL_FLOAT_MAT3x4:
+       case GL_FLOAT_MAT4x2:
+       case GL_FLOAT_MAT4x3:
+               { static Require _req(NV_non_square_matrices); }
+               break;
+       }
 }
 
 void Program::query_uniforms()
@@ -173,8 +195,6 @@ void Program::query_uniforms()
                        info.type = type;
                        uniforms_by_index[i] = &info;
                }
-               else
-                       legacy_vars = true;
        }
 
        if(ARB_uniform_buffer_object)
@@ -294,8 +314,6 @@ void Program::query_attributes()
                        info.size = size;
                        info.type = type;
                }
-               else
-                       legacy_vars = true;
        }
 }
 
@@ -410,10 +428,13 @@ void Program::Loader::geometry_shader(const string &src)
 
 void Program::Loader::standard()
 {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
        ProgramBuilder::StandardFeatures feat;
        load_sub(feat);
        ProgramBuilder builder(feat);
        builder.add_shaders(obj);
+#pragma GCC diagnostic pop
 }
 
 void Program::Loader::vertex_shader(const string &src)