From Per Fahlberg, "added use of the internal format specified in the OpenFlight format attr files."

This commit is contained in:
Robert Osfield
2007-06-05 11:18:28 +00:00
parent 11ccf8f936
commit 2b9f209765
2 changed files with 49 additions and 1 deletions

View File

@@ -85,7 +85,19 @@ class AttrData : public osg::Object
DATUM_NAD27 = 4
};
enum InternalFormat {
INTERNAL_FORMAT_DEFAULT = 0,
INTERNAL_FORMAT_TX_I_12A_4 = 1,
INTERNAL_FORMAT_TX_IA_8 = 2,
INTERNAL_FORMAT_TX_RGB_5 = 3,
INTERNAL_FORMAT_TX_RGBA_4 = 4,
INTERNAL_FORMAT_TX_IA_12 = 5,
INTERNAL_FORMAT_TX_RGBA_8 = 6,
INTERNAL_FORMAT_TX_RGBA_12 = 7,
INTERNAL_FORMAT_TX_I_16 = 8,
INTERNAL_FORMAT_TX_RGB_12 = 9
};
int32 texels_u; // Number of texels in u direction
int32 textel_v; // Number of texels in v direction
int32 direction_u; // Real world size u direction

View File

@@ -348,6 +348,42 @@ protected:
break;
}
// Internal mode
switch(attr->intFormat)
{
case AttrData::INTERNAL_FORMAT_TX_I_12A_4:
texture->setInternalFormat(GL_LUMINANCE12_ALPHA4);
break;
case AttrData::INTERNAL_FORMAT_TX_IA_8:
texture->setInternalFormat(GL_LUMINANCE_ALPHA);
break;
case AttrData::INTERNAL_FORMAT_TX_RGB_5:
texture->setInternalFormat(GL_RGB5);
break;
case AttrData::INTERNAL_FORMAT_TX_RGBA_4:
texture->setInternalFormat(GL_RGBA4);
break;
case AttrData::INTERNAL_FORMAT_TX_IA_12:
texture->setInternalFormat(GL_LUMINANCE12_ALPHA12);
break;
case AttrData::INTERNAL_FORMAT_TX_RGBA_8:
texture->setInternalFormat(GL_RGBA8);
break;
case AttrData::INTERNAL_FORMAT_TX_RGBA_12:
texture->setInternalFormat(GL_RGBA12);
break;
case AttrData::INTERNAL_FORMAT_TX_I_16:
texture->setInternalFormat(GL_INTENSITY16);
break;
case AttrData::INTERNAL_FORMAT_TX_RGB_12:
texture->setInternalFormat(GL_RGB12);
break;
case AttrData::INTERNAL_FORMAT_DEFAULT:
default:
texture->setInternalFormat(GL_RGB);
break;
}
osg::TexEnv* texenv = new osg::TexEnv;
switch (attr->texEnvMode)
{