#include #include #include static bool checkData( const osg::ShaderBinary& sb ) { return sb.getSize()>0; } static bool readData( osgDB::InputStream& is, osg::ShaderBinary& sb ) { unsigned int size; is >> size; char* data = new char[size](); if ( is.isBinary() ) { is.readCharArray( data, size ); } else { is >> is.BEGIN_BRACKET; for ( unsigned int i=0; i> std::hex >> data[i] >> std::dec; } is >> is.END_BRACKET; } if (size>0) { sb.assign( size, (unsigned char*)data ); } delete [] data; return true; } static bool writeData( osgDB::OutputStream& os, const osg::ShaderBinary& sb ) { if ( os.isBinary() ) { os << (unsigned int)sb.getSize(); os.writeCharArray( (char*)sb.getData(), sb.getSize() ); } else { const unsigned char* data = sb.getData(); os << (unsigned int)sb.getSize(); os << os.BEGIN_BRACKET << std::endl; for ( unsigned int i=0; i