From 1ed3833556a8417f318a42e1f1ecf6ef61ae92a8 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 3 Feb 2012 11:09:45 +0000 Subject: [PATCH] From Terry Welsh, improved support for handling archives --- src/osgPlugins/glsl/ReaderWriterGLSL.cpp | 9 +++++++++ src/osgWrappers/deprecated-dotosg/osg/Shader.cpp | 14 ++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/osgPlugins/glsl/ReaderWriterGLSL.cpp b/src/osgPlugins/glsl/ReaderWriterGLSL.cpp index f1534688e..3cdd38b6f 100644 --- a/src/osgPlugins/glsl/ReaderWriterGLSL.cpp +++ b/src/osgPlugins/glsl/ReaderWriterGLSL.cpp @@ -69,6 +69,15 @@ class ReaderWriterGLSL : public osgDB::ReaderWriter return new osg::Shader( shader->getType(), code ); } + virtual ReadResult readObject(std::istream& fin,const Options* options) const + { + return readShader(fin, options); + } + + virtual ReadResult readObject(const std::string& file, const osgDB::ReaderWriter::Options* options) const + { + return readShader(file, options); + } virtual ReadResult readShader(std::istream& fin,const Options* options) const { diff --git a/src/osgWrappers/deprecated-dotosg/osg/Shader.cpp b/src/osgWrappers/deprecated-dotosg/osg/Shader.cpp index 68a31165d..10ee90f13 100644 --- a/src/osgWrappers/deprecated-dotosg/osg/Shader.cpp +++ b/src/osgWrappers/deprecated-dotosg/osg/Shader.cpp @@ -8,6 +8,7 @@ #include "osgDB/Input" #include "osgDB/Output" #include "osgDB/FileUtils" +#include "osgDB/ReadFile" #include "osgDB/WriteFile" using namespace osg; @@ -44,15 +45,12 @@ bool Shader_readLocalData(Object& obj, Input& fr) if (fr.matchSequence("file %w") || fr.matchSequence("file %s") ) { - std::string fileName = osgDB::findDataFile(fr[1].getStr()); - if (!fileName.empty()) - { - shader.loadShaderSourceFromFile( fileName.c_str() ); - } + + osg::ref_ptr s = osgDB::readShaderFile(fr[1].getStr(), fr.getOptions()); + if(s.get()) + shader.setShaderSource(s->getShaderSource()); else - { - osg::notify(osg::NOTICE)<<"Warning: could not find shader file \""<