Может ли osgDB :: readNodeFile прочитать один большой файл OSGB? - PullRequest
0 голосов
/ 01 апреля 2020

Я использую библиотеку OSG для чтения файлов OSGB, но когда один файл превышает 200 МБ, будет выдано исключение. Как я могу решить эту проблему?

Размер файла не является точным, предполагается, что он вызовет исключение, если он превысит 200M. Тип исключения: std :: bad_allo c.

Я уверен, что не ошибаюсь при отладке и выпуске, потому что нет проблем при чтении небольших файлов.

Версия OSG 3.6.4

try
{
    osg::ref_ptr<osg::Node> page = osgDB::readNodeFile("file.osgb"));
}
catch (const std::bad_alloc&)
{
    return -1;
}

После тестирования см. Исходный код в InputStream. cpp, строка 816

 if ( reader )
            {
                std::stringstream inputStream;
                inputStream.write( data, size );

                osgDB::ReaderWriter::ReadResult rr = reader->readImage( inputStream );
                if ( rr.validImage() )
                    image = rr.takeImage();
                else
                {
                    OSG_WARN << "InputStream::readImage(): "
                                           << rr.statusMessage() << std::endl;
                }
            }

Я обнаружил, что размер " переменная size "- 119160141. Выглядит ненормально большим, но файл OSGB - только 200M

...