Added support for the tex_env_add and tex_env_crossbar extensions.

This commit is contained in:
Robert Osfield
2002-08-20 14:15:49 +00:00
parent 7234f7274c
commit 88f387810d
5 changed files with 76 additions and 15 deletions

View File

@@ -1,4 +1,5 @@
#include <osg/TexEnv>
#include <osg/GLExtensions>
using namespace osg;
@@ -15,9 +16,20 @@ TexEnv::~TexEnv()
void TexEnv::apply(State&) const
{
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, _mode);
if (_mode==TexEnv::BLEND)
if (_mode==ADD)
{
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, _color.ptr());
static bool isTexEnvAddSupported = isGLExtensionSupported("GL_ARB_texture_env_add");
if (isTexEnvAddSupported)
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, ADD);
else // fallback on OpenGL default.
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, MODULATE);
}
else
{
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, _mode);
if (_mode==TexEnv::BLEND)
{
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, _color.ptr());
}
}
}