osgDB.GLenumSerializer
用于将OpenGL中的枚举值序列化为可读文件格式。
GLenumSerializer()
构造函数。
GLenumSerializer(const GLenumMap& map)
构造函数,接受一个GLenumMap
对象作为参数。
bool read(std::istream& is, GLenum& value)
从输入流中读取一个GLenum对象并返回true
,或在读取失败时返回false
。
bool write(std::ostream& os, const GLenum& value)
将一个GLenum对象写入输出流并返回true
,或在写入失败时返回false
。
void setEnumMap(const GLenumMap& map)
设置GLenumMap
对象。
const GLenumMap& getEnumMap() const
获取GLenumMap
对象。
GLenumMap
是一个std::map
对象,用于将字符串映射到GL枚举值。
void insert(const std::string& str, GLenum value)
将字符串和GL枚举值插入GLenumMap
对象。
GLenum getValue(const std::string& str) const
获取给定字符串所对应的GL枚举值。
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgDB/GLenumSerializer>
int main(int argc, char** argv)
{
osgDB::Registry::instance()->setReadFileCallback(new osgDB::ReadFileCallback); // 设置读取回调
osgDB::GLenumMap map; // 创建GLenumMap
map.insert("GL_TEXTURE_2D", GL_TEXTURE_2D);
map.insert("GL_TEXTURE_CUBE_MAP", GL_TEXTURE_CUBE_MAP);
osgDB::GLenumSerializer serializer(map); // 创建串行化器
GLenum value = GL_TEXTURE_2D;
std::stringstream stream; // 创建输出流
serializer.write(stream, value); // 写入GLenum到流
osg::notify(osg::ALWAYS) << stream.str() << std::endl; // 打印流中的数据
std::stringstream input(stream.str()); // 创建读取流
GLenum result;
serializer.read(input, result); // 从流中读取,将结果写入result
osg::notify(osg::ALWAYS) << result << std::endl; // 打印读取的结果
return 0;
}
输出:
GL_TEXTURE_2D
0x0DE1