Hi Sebastien,

I don't really have any strong opinions, nor a submission which to
review.   If you send a full modified file into osg-submissions I can
review it and give you a more informed decions.

Cheers,
Robert.

On 5 August 2013 15:40, Sebastian Messerschmidt
<[email protected]> wrote:
> Hi Robert,
>
> Sorry for reviving this old thread.
> But I stumbled across the exact same problem, and solving this issue with
> the FindFileCallback is a real PITA.
> I tried the patch Katharina provided (there is still a typo in here, but
> nevertheless, it solves the issue.)
>
> The problem with the FindFileCallback is that it simply gives you no
> context. In my compiler I need to distinguish files that are referenced
> inside the openflight from those which are searched from other sources (e.g.
> looking up additional textures based on a name scheme).
> With the the ReadFileCallback it is much easier to maintain such context.
>
> So I second Katharinas idea.
> Implementation-wise I'd provide an option to support calling the readfile
> even if no valid path was found through the FindFileCallback and leave the
> default option to the old behavior.
> Would that be exectable?
>
> cheers
> Sebastian
>
>
>> HI Katharina,
>>
>> In the svn/trunk version of the OSG I added support for overriding the
>> find file operation using an osgDB::FindFileCallback, that you attach
>> to the osgDB::Registry or an osgDB::Options object.  Perhaps this
>> would be the best way for you to intercept and do something special
>> when texture files are not found.
>>
>> Cheers,
>> Robert.
>>
>> On Mon, Sep 21, 2009 at 1:49 PM, Katharina Plugge
>> <[email protected]> wrote:
>>>
>>> Hello,
>>>
>>> the OpenFlight-Plugin prevents reacting on missing Textures via a
>>> ReadFileCallback, because osgDB::readRefImageFile (called by function
>>> readTexture) is not called if the file does not exist. Would be great if
>>> this could be changed.
>>>
>>> A fix could look like this (file PaletteRecords.cpp, line 436):
>>>
>>> Code:
>>>
>>>     virtual void readRecord(RecordInputStream& in, Document& document)
>>>     {
>>>         if (document.getTexturePoolParent())
>>>             // Using parent's texture pool -- ignore this record.
>>>             return;
>>>
>>>         int maxLength = (document.version() < VERSION_14) ? 80 : 200;
>>>         std::string filename = in.readString(maxLength);
>>>         int32 index = in.readInt32(-1);
>>>         /*int32 x =*/ in.readInt32();
>>>         /*int32 y =*/ in.readInt32();
>>>
>>>         osg::StateSet* stateset = NULL;
>>>         // Need full path for unique key in local texture cache.
>>>         std::string pathname =
>>> osgDB::findDataFile(filename,document.getOptions());
>>>         if (pathname.empty())
>>>         {
>>>             // allow the aplication to react on missing texture via
>>> ReadFileCallback
>>>             stateset = readTexture(filename,document);
>>>             if( !stateset)
>>>             {
>>>                 osg::notify(osg::WARN) << "Can't find texture (" << index
>>> << ") " << filename << std::endl;
>>>                 return;
>>>             }
>>>         }
>>>         else
>>>         {
>>>             // Is texture in local cache?
>>>             osg::StateSet* stateset =
>>> flt::Registry::instance()->getTextureFromLocalCache(pathname);
>>>         }
>>>
>>>         // Read file if not in cache.
>>>         if (!stateset)
>>>         {
>>>             stateset = readTexture(pathname,document);
>>>
>>>             // Add to texture cache.
>>>
>>> flt::Registry::instance()->addTextureToLocalCache(pathname,stateset);
>>>         }
>>>
>>>         // Add to texture pool.
>>>         TexturePool* tp = document.getOrCreateTexturePool();
>>>         (*tp)[index] = stateset;
>>>     }
>>>
>>>
>>>
>>>
>>> Thank you!
>>>
>>> Greetings,
>>> Katharina[/code]
>>>
>>> ------------------
>>> Read this topic online here:
>>> http://forum.openscenegraph.org/viewtopic.php?p=17525#17525
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> osg-users mailing list
>>> [email protected]
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to