#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"
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)