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