Marcus Lindblom wrote:

>Allen Bierbaum wrote:
>  
>
>>Marcus Lindblom wrote:
>>
>>    
>>
>>>Hi,
>>>
>>>I've tried to summarize ideas and provide a proposal on FileIO. This 
>>>also serves as a little example on how such a page might look.
>>>
>>>http://opensg.vrsource.org/trac/wiki/Dev/FileIO
>>> 
>>>
>>>      
>>>
>>The page looks like a good start.  I have a couple of comments to discuss.
>>
>>- How do we balance using a stream interface with using external 
>>utilities that can only take filenames or file handles?  Does anyone 
>>know a good way to deal with this?
>>    
>>
>
>The plan was to provide stream _and_ url to loaders, so that they can 
>choose whether to load from stream or put stream to local disc (via the 
>file cache perhaps) before the "real" loader is invoked.
>
>  
>
>>- I like the idea of using ContentProviders.  What if we kept some type 
>>of "loader" state around with all the loading calls so when you are 
>>loading a file and come to a texture reference for "my_texture.jpg" the 
>>loader state would be able to resolve this to a url?  That could be the 
>>idea you have already, I may have just missed it.
>>    
>>
>
>I haven't decided on explicit or implicit management of resolving this, 
>so I sort of left it out.
>
>Explicit management would be that the loader would by itself combine the 
>  base-URL (http://server/content/model.wrl";) with the relative one 
>(i.e. "../foo/bar.jpg"). A URL class would help with that (it would be 
>very similar to boost::filesystem::path). It would mean changing 
>existing loaders a bit, but probably not much, and probably making 
>things clearer and more straightforward.
>
>Implicit management would perhaps work for one level of data, but it 
>would probably be ambigous if you go several levels down (at least, it 
>seems that to me if I think about it, someone else might be smarter).
>
>  
>
>>- While we are doing this, could we create an external threaded 
>>"resource manager" or sorts that could do async data loading and 
>>processing.  We have multi-threaded support, we may as well use it. :)
>>
>>What I am thinking here is that when you want to load a new file into 
>>the system you could tell the resource manager and continue on with your 
>>application (or block if you really want to).  Then the resource manager 
>>would go out and load the models in a separate thread and notify you 
>>when complete.  The notification could be through a callback and we 
>>could make sure it only occurs at certain times during execution when 
>>the main thread calls an update method or something on the resource manager.
>>    
>>
>
>IMHO, callbacks are kind of evil and hard to control. I'd suggest 
>something like the 'futures' concept that's being worked into C++0x. 
>I.e. you get a proxy object, which you can do a non-blocking query for 
>completion or a blocking wait to get the actual data.
>  
>
Could you provide a link to a discussion of this concept.  It sounds 
like an implementation of an async completion token pattern but I hadn't 
heard of this for C++.  I wonder how it compares to how boost.asyncio or 
twisted deffered objects work.

>I'm looking in to making such a primitive for our app, since we are 
>going to split it from two full-working threads to four (moving to 
>double dual core).
>
>So, if it turns out well, it's probably easy to add that to the 
>loader/resource manager. (I'd imagine that loading and graph-processing 
>is ideal candidates for parallellisation.)
>  
>
Yes, I agree.

>  
>
>>I have done something similar to this (but not generic) for a couple of 
>>applications and it works out great.  This is also how many game systems 
>>work so there may be some things to learn from that direction.
>>    
>>
>
>Cool. A general worker-thread system would be cool also.
>
>Point worth noting: I think the resource load/handling ought to be 
>careful in calling OpenGL, since we are sometimes rendering at the same 
>time as loading. Having it do that on startup is fine, but probably less 
>so during app run (at least until the async gl gets going proper).
>  
>
IMHO the loader should *never* call OpenGL.  I would hope that it 
doesn't right now.  Can anyone confirm this though?

-Allen

>>- New loaders:  I think we should make a list of all loader formats that 
>>we currently support, ones that other scenegraphs support and OpenSG 
>>does not, and ones that no one supports.  Then we can look at that list 
>>and prioritize the loaders that we would like to have in OpenSG.   If 
>>the loaders already exist in another scene graph we should look at 
>>porting their code.  In some cases porting the code could be very 
>>straight forward and may not take much time.  It could be a great 
>>project for users that want to contribute to the project.
>>    
>>
>
>Yup. That ought to go into Comparison or something. Also, a list of 
>'completeness' for each loader would help out, I think.
>
>  
>
>>Keep up the good work Marcus.  I think your ideas look great.
>>    
>>
>
>Thanks! :)
>
>/Marcus
>
>-------------------------------------------------------------------------
>Take Surveys. Earn Cash. Influence the Future of IT
>Join SourceForge.net's Techsay panel and you'll get the chance to share your
>opinions on IT & business topics through brief surveys -- and earn cash
>http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>_______________________________________________
>Opensg-users mailing list
>Opensg-users@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/opensg-users
>
>  
>


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to