From 2b9f209765a445836cdabbe7738b27e3b4cc3b78 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 5 Jun 2007 11:18:28 +0000 Subject: [PATCH] From Per Fahlberg, "added use of the internal format specified in the OpenFlight format attr files." --- src/osgPlugins/OpenFlight/AttrData.h | 14 +++++++- src/osgPlugins/OpenFlight/PaletteRecords.cpp | 36 ++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/osgPlugins/OpenFlight/AttrData.h b/src/osgPlugins/OpenFlight/AttrData.h index bf1cc7ca9..686e98815 100644 --- a/src/osgPlugins/OpenFlight/AttrData.h +++ b/src/osgPlugins/OpenFlight/AttrData.h @@ -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 diff --git a/src/osgPlugins/OpenFlight/PaletteRecords.cpp b/src/osgPlugins/OpenFlight/PaletteRecords.cpp index 56d0cf896..9a36dd358 100644 --- a/src/osgPlugins/OpenFlight/PaletteRecords.cpp +++ b/src/osgPlugins/OpenFlight/PaletteRecords.cpp @@ -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) {