#include <stdexcept>
#include <msp/gl/extensions/arb_multitexture.h>
#include <msp/gl/extensions/arb_vertex_shader.h>
+#include <msp/gl/extensions/msp_legacy_features.h>
#include "gl.h"
#include "misc.h"
#include "texunit.h"
TexUnit *TexUnit::cur_unit = 0;
TexUnit::TexUnit():
+ legacy(false),
texture(0)
{ }
return count;
}
+unsigned TexUnit::get_n_legacy_units()
+{
+ static int count = -1;
+ if(count<0)
+ {
+ if(MSP_legacy_features)
+ count = get_i(GL_MAX_TEXTURE_UNITS);
+ else
+ count = 0;
+ }
+ return count;
+}
+
TexUnit &TexUnit::get_unit(unsigned n)
{
if(n>0)
if(units.size()<=n)
{
unsigned i = units.size();
+ unsigned n_legacy = get_n_legacy_units();
units.resize(n+1, TexUnit());
for(; i<units.size(); ++i)
+ {
units[i].index = i;
+ units[i].legacy = (i<n_legacy);
+ }
}
return units[n];