X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogram.cpp;h=a5128e9b77436ef13f24bbf1de7b2e7f3b263526;hb=9be04243c92f024327e74ad8d48861581d83b7ed;hp=e65a703f77a8d1f5f4b2d769e7c85ca0d439b2bd;hpb=a40fc85277dba5c34402a0e703d038efd30cc57b;p=libs%2Fgl.git diff --git a/source/program.cpp b/source/program.cpp index e65a703f..a5128e9b 100644 --- a/source/program.cpp +++ b/source/program.cpp @@ -28,6 +28,8 @@ Program::Program() init(); } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" Program::Program(const ProgramBuilder::StandardFeatures &features) { init(); @@ -36,6 +38,7 @@ Program::Program(const ProgramBuilder::StandardFeatures &features) builder.add_shaders(*this); link(); } +#pragma GCC diagnostic pop Program::Program(const std::string &source) { @@ -143,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() @@ -405,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)