#include <msp/gl/extensions/arb_vertex_shader.h>
#include "gl.h"
#include "misc.h"
+#include "texture.h"
#include "texunit.h"
using namespace std;
TexUnit::TexUnit():
texture(0),
- texenv(0)
-{
- fill(texgen, texgen+4, static_cast<const TexGen *>(0));
-}
+ sampler(0)
+{ }
bool TexUnit::set_texture(const Texture *tex)
{
return result;
}
-bool TexUnit::set_texenv(const TexEnv *env)
-{
- bool result = (texenv!=env);
- texenv = env;
- return result;
-}
-
-bool TexUnit::set_texgen(unsigned i, const TexGen *gen)
+bool TexUnit::set_sampler(const Sampler *samp)
{
- if(i>=4)
- throw out_of_range("TexUnit::set_texgen");
- bool result = (texgen[i]!=gen);
- texgen[i] = gen;
+ bool result = (samp!=sampler);
+ sampler = samp;
return result;
}
-const TexGen *TexUnit::get_texgen(unsigned i)
-{
- if(i>=4)
- throw out_of_range("TexUnit::get_texgen");
- return texgen[i];
-}
-
void TexUnit::bind()
{
if(cur_unit!=this && (cur_unit || index))
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 0;
}
-TexUnit *TexUnit::find_unit(const TexEnv *env)
-{
- for(vector<TexUnit>::iterator i=units.begin(); i!=units.end(); ++i)
- if(i->texenv==env)
- return &*i;
- return 0;
-}
-
} // namespace GL
} // namespace Msp