Added new osg::TextureBase, osg::Texture1D, osg::Texture2D, and osg::Texture3D
classes, and changed osg::Texture and osg::TextureCubeMap so that they now derive from osg::TextureBase.
This commit is contained in:
@@ -2047,14 +2047,6 @@ void MyStateSet::Query( const osg::StateSet &sset )
|
||||
}
|
||||
}
|
||||
|
||||
if ( texture.getSubloadMode() != osg::Texture::OFF ) {
|
||||
// FIXME: When we generalize this, remove the static hack
|
||||
static int been_here = 0;
|
||||
if ( !been_here ) {
|
||||
msg_bin.Add( "WARNING: Texture subloading not supported.\n" );
|
||||
been_here = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TEXENV
|
||||
|
||||
@@ -49,8 +49,10 @@ CXXFILES =\
|
||||
TexGen.cpp\
|
||||
TexMat.cpp\
|
||||
Texture.cpp\
|
||||
Transform.cpp\
|
||||
TextureBase.cpp\
|
||||
Texture2D.cpp\
|
||||
TextureCubeMap.cpp\
|
||||
Transform.cpp\
|
||||
|
||||
|
||||
LIBS += $(OSG_LIBS) $(OTHER_LIBS)
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include "osg/Texture"
|
||||
|
||||
#ifdef TEXTURE_USE_DEPRECATED_API
|
||||
|
||||
|
||||
#include "osgDB/Registry"
|
||||
#include "osgDB/Input"
|
||||
#include "osgDB/Output"
|
||||
@@ -27,7 +30,7 @@ RegisterDotOsgWrapperProxy g_TextureProxy
|
||||
(
|
||||
osgNew osg::Texture,
|
||||
"Texture",
|
||||
"Object StateAttribute Texture",
|
||||
"Object StateAttribute Texture TextureBase",
|
||||
&Texture_readLocalData,
|
||||
&Texture_writeLocalData
|
||||
);
|
||||
@@ -55,70 +58,6 @@ bool Texture_readLocalData(Object& obj, Input& fr)
|
||||
fr += 2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
Texture::WrapMode wrap;
|
||||
if (fr[0].matchWord("wrap_s") && Texture_matchWrapStr(fr[1].getStr(),wrap))
|
||||
{
|
||||
texture.setWrap(Texture::WRAP_S,wrap);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("wrap_t") && Texture_matchWrapStr(fr[1].getStr(),wrap))
|
||||
{
|
||||
texture.setWrap(Texture::WRAP_T,wrap);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("wrap_r") && Texture_matchWrapStr(fr[1].getStr(),wrap))
|
||||
{
|
||||
texture.setWrap(Texture::WRAP_R,wrap);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
Texture::FilterMode filter;
|
||||
if (fr[0].matchWord("min_filter") && Texture_matchFilterStr(fr[1].getStr(),filter))
|
||||
{
|
||||
texture.setFilter(Texture::MIN_FILTER,filter);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("mag_filter") && Texture_matchFilterStr(fr[1].getStr(),filter))
|
||||
{
|
||||
texture.setFilter(Texture::MAG_FILTER,filter);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr.matchSequence("maxAnisotropy %f"))
|
||||
{
|
||||
float anis=1.0f;
|
||||
fr[1].getFloat(anis);
|
||||
texture.setMaxAnisotropy(anis);
|
||||
fr +=2 ;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
Texture::InternalFormatMode mode;
|
||||
if (fr[0].matchWord("internalFormatMode") && Texture_matchInternalFormatModeStr(fr[1].getStr(),mode))
|
||||
{
|
||||
texture.setInternalFormatMode(mode);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("internalFormatValue"))
|
||||
{
|
||||
int value;
|
||||
if (Texture_matchInternalFormatValueStr(fr[1].getStr(),value) || fr[1].getInt(value))
|
||||
{
|
||||
texture.setInternalFormatValue(value);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
}
|
||||
|
||||
Texture::SubloadMode submode;
|
||||
if (fr[0].matchWord("subloadMode") && Texture_matchSubloadModeStr(fr[1].getStr(),submode))
|
||||
@@ -201,22 +140,6 @@ bool Texture_writeLocalData(const Object& obj, Output& fw)
|
||||
fw.indent() << "file \""<<fw.getFileNameForOutput(texture.getImage()->getFileName())<<"\""<< std::endl;
|
||||
}
|
||||
|
||||
fw.indent() << "wrap_s " << Texture_getWrapStr(texture.getWrap(Texture::WRAP_S)) << std::endl;
|
||||
fw.indent() << "wrap_t " << Texture_getWrapStr(texture.getWrap(Texture::WRAP_T)) << std::endl;
|
||||
fw.indent() << "wrap_r " << Texture_getWrapStr(texture.getWrap(Texture::WRAP_R)) << std::endl;
|
||||
|
||||
fw.indent() << "min_filter " << Texture_getFilterStr(texture.getFilter(Texture::MIN_FILTER)) << std::endl;
|
||||
fw.indent() << "mag_filter " << Texture_getFilterStr(texture.getFilter(Texture::MAG_FILTER)) << std::endl;
|
||||
fw.indent() << "maxAnisotropy " << texture.getMaxAnisotropy() << std::endl;
|
||||
|
||||
fw.indent() << "internalFormatMode " << Texture_getInternalFormatModeStr(texture.getInternalFormatMode()) << std::endl;
|
||||
|
||||
if (texture.getInternalFormatMode()==Texture::USE_USER_DEFINED_FORMAT)
|
||||
{
|
||||
const char* str = Texture_getInternalFormatValueStr(texture.getInternalFormatValue());
|
||||
if (str) fw.indent() << "internalFormatValue " << str << std::endl;
|
||||
else fw.indent() << "internalFormatValue " << texture.getInternalFormatValue() << std::endl;
|
||||
}
|
||||
|
||||
fw.indent() << "subloadMode " << Texture_getSubloadModeStr(texture.getSubloadMode()) << std::endl;
|
||||
if (texture.getSubloadMode()!=Texture::OFF)
|
||||
@@ -395,3 +318,26 @@ const char* Texture_getSubloadModeStr(Texture::SubloadMode value)
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
|
||||
#include "osg/Texture2D"
|
||||
|
||||
#include "osgDB/Registry"
|
||||
#include "osgDB/Input"
|
||||
#include "osgDB/Output"
|
||||
|
||||
using namespace osg;
|
||||
using namespace osgDB;
|
||||
|
||||
RegisterDotOsgWrapperProxy g_TextureProxy
|
||||
(
|
||||
osgNew osg::Texture2D,
|
||||
"Texture",
|
||||
"Object StateAttribute Texture2D TextureBase",
|
||||
0,
|
||||
0
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
71
src/osgPlugins/osg/Texture2D.cpp
Normal file
71
src/osgPlugins/osg/Texture2D.cpp
Normal file
@@ -0,0 +1,71 @@
|
||||
#include "osg/Texture2D"
|
||||
|
||||
#include "osgDB/Registry"
|
||||
#include "osgDB/Input"
|
||||
#include "osgDB/Output"
|
||||
|
||||
using namespace osg;
|
||||
using namespace osgDB;
|
||||
|
||||
// forward declare functions to use later.
|
||||
bool Texture2D_readLocalData(Object& obj, Input& fr);
|
||||
bool Texture2D_writeLocalData(const Object& obj, Output& fw);
|
||||
|
||||
bool Texture2D_matchWrapStr(const char* str,Texture2D::WrapMode& wrap);
|
||||
const char* Texture2D_getWrapStr(Texture2D::WrapMode wrap);
|
||||
bool Texture2D_matchFilterStr(const char* str,Texture2D::FilterMode& filter);
|
||||
const char* Texture2D_getFilterStr(Texture2D::FilterMode filter);
|
||||
bool Texture2D_matchInternalFormatModeStr(const char* str,Texture2D::InternalFormatMode& mode);
|
||||
const char* Texture2D_getInternalFormatModeStr(Texture2D::InternalFormatMode mode);
|
||||
bool Texture2D_matchInternalFormatStr(const char* str,int& value);
|
||||
const char* Texture2D_getInternalFormatStr(int value);
|
||||
|
||||
// register the read and write functions with the osgDB::Registry.
|
||||
RegisterDotOsgWrapperProxy g_Texture2DProxy
|
||||
(
|
||||
osgNew osg::Texture2D,
|
||||
"Texture2D",
|
||||
"Object StateAttribute Texture2D TextureBase",
|
||||
&Texture2D_readLocalData,
|
||||
&Texture2D_writeLocalData
|
||||
);
|
||||
|
||||
|
||||
bool Texture2D_readLocalData(Object& obj, Input& fr)
|
||||
{
|
||||
bool iteratorAdvanced = false;
|
||||
|
||||
Texture2D& texture = static_cast<Texture2D&>(obj);
|
||||
|
||||
if (fr[0].matchWord("file") && fr[1].isString())
|
||||
{
|
||||
std::string filename = fr[1].getStr();
|
||||
Image* image = fr.readImage(filename.c_str());
|
||||
if (image)
|
||||
{
|
||||
// name will have already been set by the image plugin,
|
||||
// but it will have absolute path, so will override it
|
||||
// here to keep the original name intact.
|
||||
//image->setFileName(filename);
|
||||
texture.setImage(image);
|
||||
}
|
||||
|
||||
fr += 2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
return iteratorAdvanced;
|
||||
}
|
||||
|
||||
|
||||
bool Texture2D_writeLocalData(const Object& obj, Output& fw)
|
||||
{
|
||||
const Texture2D& texture = static_cast<const Texture2D&>(obj);
|
||||
|
||||
if (texture.getImage() && !(texture.getImage()->getFileName().empty()))
|
||||
{
|
||||
fw.indent() << "file \""<<fw.getFileNameForOutput(texture.getImage()->getFileName())<<"\""<< std::endl;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
263
src/osgPlugins/osg/TextureBase.cpp
Normal file
263
src/osgPlugins/osg/TextureBase.cpp
Normal file
@@ -0,0 +1,263 @@
|
||||
#include <osg/TextureBase>
|
||||
|
||||
#include <osgDB/Registry>
|
||||
#include <osgDB/Input>
|
||||
#include <osgDB/Output>
|
||||
|
||||
using namespace osg;
|
||||
using namespace osgDB;
|
||||
|
||||
// forward declare functions to use later.
|
||||
bool TextureBase_readLocalData(Object& obj, Input& fr);
|
||||
bool TextureBase_writeLocalData(const Object& obj, Output& fw);
|
||||
|
||||
bool TextureBase_matchWrapStr(const char* str,TextureBase::WrapMode& wrap);
|
||||
const char* TextureBase_getWrapStr(TextureBase::WrapMode wrap);
|
||||
bool TextureBase_matchFilterStr(const char* str,TextureBase::FilterMode& filter);
|
||||
const char* TextureBase_getFilterStr(TextureBase::FilterMode filter);
|
||||
bool TextureBase_matchInternalFormatModeStr(const char* str,TextureBase::InternalFormatMode& mode);
|
||||
const char* TextureBase_getInternalFormatModeStr(TextureBase::InternalFormatMode mode);
|
||||
bool TextureBase_matchInternalFormatStr(const char* str,int& value);
|
||||
const char* TextureBase_getInternalFormatStr(int value);
|
||||
|
||||
// register the read and write functions with the osgDB::Registry.
|
||||
RegisterDotOsgWrapperProxy g_TextureBaseProxy
|
||||
(
|
||||
0,
|
||||
"TextureBase",
|
||||
"Object StateAttribute TextureBase",
|
||||
&TextureBase_readLocalData,
|
||||
&TextureBase_writeLocalData
|
||||
);
|
||||
|
||||
|
||||
bool TextureBase_readLocalData(Object& obj, Input& fr)
|
||||
{
|
||||
bool iteratorAdvanced = false;
|
||||
|
||||
TextureBase& texture = static_cast<TextureBase&>(obj);
|
||||
|
||||
TextureBase::WrapMode wrap;
|
||||
if (fr[0].matchWord("wrap_s") && TextureBase_matchWrapStr(fr[1].getStr(),wrap))
|
||||
{
|
||||
texture.setWrap(TextureBase::WRAP_S,wrap);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("wrap_t") && TextureBase_matchWrapStr(fr[1].getStr(),wrap))
|
||||
{
|
||||
texture.setWrap(TextureBase::WRAP_T,wrap);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("wrap_r") && TextureBase_matchWrapStr(fr[1].getStr(),wrap))
|
||||
{
|
||||
texture.setWrap(TextureBase::WRAP_R,wrap);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
TextureBase::FilterMode filter;
|
||||
if (fr[0].matchWord("min_filter") && TextureBase_matchFilterStr(fr[1].getStr(),filter))
|
||||
{
|
||||
texture.setFilter(TextureBase::MIN_FILTER,filter);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("mag_filter") && TextureBase_matchFilterStr(fr[1].getStr(),filter))
|
||||
{
|
||||
texture.setFilter(TextureBase::MAG_FILTER,filter);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr.matchSequence("maxAnisotropy %f"))
|
||||
{
|
||||
float anis=1.0f;
|
||||
fr[1].getFloat(anis);
|
||||
texture.setMaxAnisotropy(anis);
|
||||
fr +=2 ;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
TextureBase::InternalFormatMode mode;
|
||||
if (fr[0].matchWord("internalFormatMode") && TextureBase_matchInternalFormatModeStr(fr[1].getStr(),mode))
|
||||
{
|
||||
texture.setInternalFormatMode(mode);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
|
||||
if (fr[0].matchWord("internalFormatValue"))
|
||||
{
|
||||
int value;
|
||||
if (TextureBase_matchInternalFormatStr(fr[1].getStr(),value) || fr[1].getInt(value))
|
||||
{
|
||||
texture.setInternalFormat(value);
|
||||
fr+=2;
|
||||
iteratorAdvanced = true;
|
||||
}
|
||||
}
|
||||
|
||||
return iteratorAdvanced;
|
||||
}
|
||||
|
||||
|
||||
bool TextureBase_writeLocalData(const Object& obj, Output& fw)
|
||||
{
|
||||
const TextureBase& texture = static_cast<const TextureBase&>(obj);
|
||||
|
||||
fw.indent() << "wrap_s " << TextureBase_getWrapStr(texture.getWrap(TextureBase::WRAP_S)) << std::endl;
|
||||
fw.indent() << "wrap_t " << TextureBase_getWrapStr(texture.getWrap(TextureBase::WRAP_T)) << std::endl;
|
||||
fw.indent() << "wrap_r " << TextureBase_getWrapStr(texture.getWrap(TextureBase::WRAP_R)) << std::endl;
|
||||
|
||||
fw.indent() << "min_filter " << TextureBase_getFilterStr(texture.getFilter(TextureBase::MIN_FILTER)) << std::endl;
|
||||
fw.indent() << "mag_filter " << TextureBase_getFilterStr(texture.getFilter(TextureBase::MAG_FILTER)) << std::endl;
|
||||
fw.indent() << "maxAnisotropy " << texture.getMaxAnisotropy() << std::endl;
|
||||
|
||||
fw.indent() << "internalFormatMode " << TextureBase_getInternalFormatModeStr(texture.getInternalFormatMode()) << std::endl;
|
||||
|
||||
if (texture.getInternalFormatMode()==TextureBase::USE_USER_DEFINED_FORMAT)
|
||||
{
|
||||
const char* str = TextureBase_getInternalFormatStr(texture.getInternalFormat());
|
||||
if (str) fw.indent() << "internalFormat " << str << std::endl;
|
||||
else fw.indent() << "internalFormat " << texture.getInternalFormat() << std::endl;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool TextureBase_matchWrapStr(const char* str,TextureBase::WrapMode& wrap)
|
||||
{
|
||||
if (strcmp(str,"CLAMP")==0) wrap = TextureBase::CLAMP;
|
||||
else if (strcmp(str,"CLAMP_TO_EDGE")==0) wrap = TextureBase::CLAMP_TO_EDGE;
|
||||
else if (strcmp(str,"CLAMP_TO_BORDER")==0) wrap = TextureBase::CLAMP_TO_BORDER;
|
||||
else if (strcmp(str,"REPEAT")==0) wrap = TextureBase::REPEAT;
|
||||
else if (strcmp(str,"MIRROR")==0) wrap = TextureBase::MIRROR;
|
||||
else return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
const char* TextureBase_getWrapStr(TextureBase::WrapMode wrap)
|
||||
{
|
||||
switch(wrap)
|
||||
{
|
||||
case(TextureBase::CLAMP): return "CLAMP";
|
||||
case(TextureBase::CLAMP_TO_EDGE): return "CLAMP_TO_EDGE";
|
||||
case(TextureBase::CLAMP_TO_BORDER): return "CLAMP_TO_BORDER";
|
||||
case(TextureBase::REPEAT): return "REPEAT";
|
||||
case(TextureBase::MIRROR): return "MIRROR";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
bool TextureBase_matchFilterStr(const char* str,TextureBase::FilterMode& filter)
|
||||
{
|
||||
if (strcmp(str,"NEAREST")==0) filter = TextureBase::NEAREST;
|
||||
else if (strcmp(str,"LINEAR")==0) filter = TextureBase::LINEAR;
|
||||
else if (strcmp(str,"NEAREST_MIPMAP_NEAREST")==0) filter = TextureBase::NEAREST_MIPMAP_NEAREST;
|
||||
else if (strcmp(str,"LINEAR_MIPMAP_NEAREST")==0) filter = TextureBase::LINEAR_MIPMAP_NEAREST;
|
||||
else if (strcmp(str,"NEAREST_MIPMAP_LINEAR")==0) filter = TextureBase::NEAREST_MIPMAP_LINEAR;
|
||||
else if (strcmp(str,"LINEAR_MIPMAP_LINEAR")==0) filter = TextureBase::LINEAR_MIPMAP_LINEAR;
|
||||
else if (strcmp(str,"ANISOTROPIC")==0) filter = TextureBase::LINEAR;
|
||||
else return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
const char* TextureBase_getFilterStr(TextureBase::FilterMode filter)
|
||||
{
|
||||
switch(filter)
|
||||
{
|
||||
case(TextureBase::NEAREST): return "NEAREST";
|
||||
case(TextureBase::LINEAR): return "LINEAR";
|
||||
case(TextureBase::NEAREST_MIPMAP_NEAREST): return "NEAREST_MIPMAP_NEAREST";
|
||||
case(TextureBase::LINEAR_MIPMAP_NEAREST): return "LINEAR_MIPMAP_NEAREST";
|
||||
case(TextureBase::NEAREST_MIPMAP_LINEAR): return "NEAREST_MIPMAP_LINEAR";
|
||||
case(TextureBase::LINEAR_MIPMAP_LINEAR): return "LINEAR_MIPMAP_LINEAR";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
bool TextureBase_matchInternalFormatModeStr(const char* str,TextureBase::InternalFormatMode& mode)
|
||||
{
|
||||
if (strcmp(str,"USE_IMAGE_DATA_FORMAT")==0) mode = TextureBase::USE_IMAGE_DATA_FORMAT;
|
||||
else if (strcmp(str,"USE_USER_DEFINED_FORMAT")==0) mode = TextureBase::USE_USER_DEFINED_FORMAT;
|
||||
else if (strcmp(str,"USE_ARB_COMPRESSION")==0) mode = TextureBase::USE_ARB_COMPRESSION;
|
||||
else if (strcmp(str,"USE_S3TC_DXT1_COMPRESSION")==0) mode = TextureBase::USE_S3TC_DXT1_COMPRESSION;
|
||||
else if (strcmp(str,"USE_S3TC_DXT3_COMPRESSION")==0) mode = TextureBase::USE_S3TC_DXT3_COMPRESSION;
|
||||
else if (strcmp(str,"USE_S3TC_DXT5_COMPRESSION")==0) mode = TextureBase::USE_S3TC_DXT5_COMPRESSION;
|
||||
else return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
const char* TextureBase_getInternalFormatModeStr(TextureBase::InternalFormatMode mode)
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case(TextureBase::USE_IMAGE_DATA_FORMAT): return "USE_IMAGE_DATA_FORMAT";
|
||||
case(TextureBase::USE_USER_DEFINED_FORMAT): return "USE_USER_DEFINED_FORMAT";
|
||||
case(TextureBase::USE_ARB_COMPRESSION): return "USE_ARB_COMPRESSION";
|
||||
case(TextureBase::USE_S3TC_DXT1_COMPRESSION): return "USE_S3TC_DXT1_COMPRESSION";
|
||||
case(TextureBase::USE_S3TC_DXT3_COMPRESSION): return "USE_S3TC_DXT3_COMPRESSION";
|
||||
case(TextureBase::USE_S3TC_DXT5_COMPRESSION): return "USE_S3TC_DXT5_COMPRESSION";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
bool TextureBase_matchInternalFormatStr(const char* str,int& value)
|
||||
{
|
||||
|
||||
if ( strcmp(str,"GL_INTENSITY")==0) value = GL_INTENSITY;
|
||||
else if (strcmp(str,"GL_LUMINANCE")==0) value = GL_LUMINANCE;
|
||||
else if (strcmp(str,"GL_ALPHA")==0) value = GL_ALPHA;
|
||||
else if (strcmp(str,"GL_LUMINANCE_ALPHA")==0) value = GL_LUMINANCE_ALPHA;
|
||||
else if (strcmp(str,"GL_RGB")==0) value = GL_RGB;
|
||||
else if (strcmp(str,"GL_RGBA")==0) value = GL_RGBA;
|
||||
else if (strcmp(str,"GL_COMPRESSED_ALPHA_ARB")==0) value = GL_COMPRESSED_ALPHA_ARB;
|
||||
else if (strcmp(str,"GL_COMPRESSED_LUMINANCE_ARB")==0) value = GL_COMPRESSED_LUMINANCE_ARB;
|
||||
else if (strcmp(str,"GL_COMPRESSED_INTENSITY_ARB")==0) value = GL_COMPRESSED_INTENSITY_ARB;
|
||||
else if (strcmp(str,"GL_COMPRESSED_LUMINANCE_ALPHA_ARB")==0) value = GL_COMPRESSED_LUMINANCE_ALPHA_ARB;
|
||||
else if (strcmp(str,"GL_COMPRESSED_RGB_ARB")==0) value = GL_COMPRESSED_RGB_ARB;
|
||||
else if (strcmp(str,"GL_COMPRESSED_RGBA_ARB")==0) value = GL_COMPRESSED_RGBA_ARB;
|
||||
else if (strcmp(str,"GL_COMPRESSED_RGB_S3TC_DXT1_EXT")==0) value = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||
else if (strcmp(str,"GL_COMPRESSED_RGBA_S3TC_DXT1_EXT")==0) value = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
||||
else if (strcmp(str,"GL_COMPRESSED_RGBA_S3TC_DXT3_EXT")==0) value = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||
else if (strcmp(str,"GL_COMPRESSED_RGBA_S3TC_DXT5_EXT")==0) value = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||
else return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
const char* TextureBase_getInternalFormatStr(int value)
|
||||
{
|
||||
switch(value)
|
||||
{
|
||||
case(GL_INTENSITY): return "GL_INTENSITY";
|
||||
case(GL_LUMINANCE): return "GL_LUMINANCE";
|
||||
case(GL_ALPHA): return "GL_ALPHA";
|
||||
case(GL_LUMINANCE_ALPHA): return "GL_LUMINANCE_ALPHA";
|
||||
case(GL_RGB): return "GL_RGB";
|
||||
case(GL_RGBA): return "GL_RGBA";
|
||||
case(GL_COMPRESSED_ALPHA_ARB): return "GL_COMPRESSED_ALPHA_ARB";
|
||||
case(GL_COMPRESSED_LUMINANCE_ARB): return "GL_COMPRESSED_LUMINANCE_ARB";
|
||||
case(GL_COMPRESSED_INTENSITY_ARB): return "GL_COMPRESSED_INTENSITY_ARB";
|
||||
case(GL_COMPRESSED_LUMINANCE_ALPHA_ARB): return "GL_COMPRESSED_LUMINANCE_ALPHA_ARB";
|
||||
case(GL_COMPRESSED_RGB_ARB): return "GL_COMPRESSED_RGB_ARB";
|
||||
case(GL_COMPRESSED_RGBA_ARB): return "GL_COMPRESSED_RGBA_ARB";
|
||||
case(GL_COMPRESSED_RGB_S3TC_DXT1_EXT): return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT";
|
||||
case(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT): return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT";
|
||||
case(GL_COMPRESSED_RGBA_S3TC_DXT3_EXT): return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT";
|
||||
case(GL_COMPRESSED_RGBA_S3TC_DXT5_EXT): return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT";
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -11,23 +11,12 @@ using namespace osgDB;
|
||||
bool TextureCubeMap_readLocalData(Object& obj, Input& fr);
|
||||
bool TextureCubeMap_writeLocalData(const Object& obj, Output& fw);
|
||||
|
||||
bool TextureCubeMap_matchWrapStr(const char* str,TextureCubeMap::WrapMode& wrap);
|
||||
const char* TextureCubeMap_getWrapStr(TextureCubeMap::WrapMode wrap);
|
||||
bool TextureCubeMap_matchFilterStr(const char* str,TextureCubeMap::FilterMode& filter);
|
||||
const char* TextureCubeMap_getFilterStr(TextureCubeMap::FilterMode filter);
|
||||
bool TextureCubeMap_matchInternalFormatModeStr(const char* str,TextureCubeMap::InternalFormatMode& mode);
|
||||
const char* TextureCubeMap_getInternalFormatModeStr(TextureCubeMap::InternalFormatMode mode);
|
||||
bool TextureCubeMap_matchInternalFormatValueStr(const char* str,int& value);
|
||||
const char* TextureCubeMap_getInternalFormatValueStr(int value);
|
||||
bool TextureCubeMap_matchSubloadModeStr(const char* str, TextureCubeMap::SubloadMode& value);
|
||||
const char* TextureCubeMap_getSubloadModeStr(TextureCubeMap::SubloadMode value);
|
||||
|
||||
// register the read and write functions with the osgDB::Registry.
|
||||
RegisterDotOsgWrapperProxy g_TextureCubeMapProxy
|
||||
(
|
||||
osgNew osg::TextureCubeMap,
|
||||
"TextureCubeMap",
|
||||
"Object StateAttribute TextureCubeMap Texture",
|
||||
"Object StateAttribute TextureCubeMap TextureBase",
|
||||
&TextureCubeMap_readLocalData,
|
||||
&TextureCubeMap_writeLocalData
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user