]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/texunit.cpp
Store implementation limits in a central struct
[libs/gl.git] / source / core / texunit.cpp
index 0659d6154e80523ffaa0baf75f6bf00ff96a05f2..7405d8da10a8d31ce1b8f70d757b28fff375067c 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdexcept>
 #include <msp/gl/extensions/arb_multitexture.h>
 #include <msp/gl/extensions/arb_vertex_shader.h>
+#include "deviceinfo.h"
 #include "gl.h"
 #include "misc.h"
 #include "texture.h"
@@ -42,24 +43,14 @@ void TexUnit::bind()
 
 unsigned TexUnit::get_n_units()
 {
-       static int count = -1;
-       if(count<0)
-       {
-               if(ARB_vertex_shader)
-                       count = get_i(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS);
-               else if(ARB_multitexture)
-                       count = get_i(GL_MAX_TEXTURE_UNITS);
-               else
-                       count = 1;
-       }
-       return count;
+       return Limits::get_global().max_texture_bindings;
 }
 
 TexUnit &TexUnit::get_unit(unsigned n)
 {
        if(n>0)
                static Require _req(ARB_multitexture);
-       if(n>=get_n_units())
+       if(n>=Limits::get_global().max_texture_bindings)
                throw out_of_range("TexUnit::get_unit");
 
        if(units.size()<=n)