#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)
{ }
if(count<0)
{
if(ARB_vertex_shader)
- count = get_i(GL_MAX_TEXTURE_IMAGE_UNITS);
+ count = get_i(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS);
else if(ARB_multitexture)
count = get_i(GL_MAX_TEXTURE_UNITS);
else
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];