#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 "texture.h"
#include "texunit.h"
using namespace std;
TexUnit *TexUnit::cur_unit = 0;
TexUnit::TexUnit():
- legacy(false),
texture(0),
- tex_legacy(false)
+ sampler(0)
{ }
-bool TexUnit::set_texture(const Texture *tex, bool lgc)
+bool TexUnit::set_texture(const Texture *tex)
{
- lgc = (lgc && legacy && tex);
- bool result = (tex!=texture || lgc!=tex_legacy);
+ bool result = (tex!=texture);
texture = tex;
- tex_legacy = lgc;
+ return result;
+}
+
+bool TexUnit::set_sampler(const Sampler *samp)
+{
+ bool result = (samp!=sampler);
+ sampler = samp;
return result;
}
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];