Jason,

Architecturally I will usually treat the OSG API as a low-level
implementation detail. So rather than a thin layer over OSG, I usually will
encapsulate OSG code inside controller interfaces that accompany the OSG
.NET Control.

So for example, there will be a single C++/CLI assembly that will expose the
.NET control, which handles repainting, mouse/keyboard events, and the
rendering loop.

That control will then expose various Controller interfaces, like:

* ViewController - for setting/getting the camera
* ContentController - for adding/removing/toggling models or layers in the
scene
* AssetController - for managing named dynamic objects/entities
* AnnotationController - for managing text labels
...and so on.

So this assembly becomes an application-level toolkit that abstracts away
not only OSG but the whole concept of the scene graph. Then the C# UI code
(in a referencing assembly) will look kind of like:

SceneControl scene = new SceneControl();
myForm.Controls.Add( scene );
...
scene.Content.AddLayer( "f:/data/terrain.osga" );
scene.Content.AddLayer( "f:/data/trees.osga" );
...
scene.View.LookAt( x, y );

and so on. Now if you are looking for more re-use, you can break the
Controller interfaces our into their own separate assemblies. It just
depends on the complexity of your app. -gw

-- 
Glenn Waldron : Pelican Mapping : http://pelicanmapping.com : 703-652-4791

On Feb 17, 2008 10:52 AM, Jason Beverage <[EMAIL PROTECTED]> wrote:

> Hi Glenn,
>
> We're using c# and OSG as well, but we're using hand crafted wrappers that
> attempt to expose all of the OSG functionality to C# (like the osgDotNet
> wrappers).  This works well for the most part, but I often feel that
> sometimes it is more complicated than it is worth.  I've also written a
> simple OSG control that binds an osgViewer to a window in C++/CLI like you
> mentioned, and it actually is surprisingly simple.
>
> When you write your applications that use OSG and C#, how is your
> application architecture typically set up?  Do you just maintain a thin
> layer of C++/CLI code that deals with OSG?  Just curious to get your opinion
> and learn something from your experience:)
>
> Thanks!
>
> Jason
>
>
> On Feb 16, 2008 11:16 PM, Glenn Waldron <[EMAIL PROTECTED]> wrote:
>
> > Sherman,
> > I'll vouch for it ... I've written dozens of apps using C++/CLI and OSG
> > and it works great. It is very convenient to be able to mix managed and
> > unmanaged code virtually at will (there are a few restrictions) as the
> > interop is handled transparently by the CLR. Plus with .NET 2.0, it's
> > simple to write an OSG .NET Control in a C++/CLI assembly, and then use it
> > in all your C# UI code.
> > -gw
> >
> > --
> > Glenn Waldron : Pelican Mapping : http://pelicanmapping.com :
> > 703-652-4791
> >
> >
> > On Feb 16, 2008 10:10 PM, sherman wilcox <[EMAIL PROTECTED]>
> > wrote:
> >
> > > Ok - so it sounds as if using C# with OSG is bad idea. Sounds possible
> > > - just painful. On the plus side I hear (on occasion) good things said
> > > about C++/CLI. Can anyone else comment on their experience using OSG
> > > and C++/CLI?
> > >
> > > On Feb 14, 2008 10:48 AM, hesicong2006 <[EMAIL PROTECTED]> wrote:
> > > > Hi,
> > > > You should try OSG.NET project, but the project does not contains
> > > every
> > > > feature OSG could provide. A much better solution will be use of
> > > > C++/CLI, this language can create mix native C++ and managed code.
> > > The
> > > > main C# UI design benefit is also contained in C++/CLI. I have use
> > > > C++/CLI to integrate OSG and .NET, very well, you should try it. But
> > > the
> > > > plain will be the much lower compile speed due to lots of inline
> > > code of
> > > > OSG.
> > > >
> > > >
> > > > sherman wilcox wrote:
> > > > > I've read a few posts and I'm a bit fuzzy on the subject. I have
> > > an
> > > > > OSG app wrapped up in a C++ library. Now I need a UI. I can attach
> > > > > this and drive this libarary from a console app, MFC GUI, or even
> > > the
> > > > > standard Windows API, etc. - All in C++. However, I'm considering
> > > > > using C#. I've heard lots of good things about C# from a UI
> > > > > development perspective. From an OSG/C# point of view - there
> > > seems to
> > > > > be lots of pain.
> > > > >
> > > > > I'm not a C# developer - it's all Greek to me - so what I'm
> > > imagining
> > > > > may not be practical in reality hence this post. Is it possible to
> > > > > link in my OSG app wrapped up in a C++ blanket and use my own API
> > > from
> > > > > with a C# GUI? Is it painful? What would I lose by going this
> > > route?
> > > > > Is possible that at some point I won't be able to take advantage
> > > of
> > > > > some latest OSG feature due to some unforeseen incapability? My
> > > > > current UIs (I'm thinking of one MFC UI in particular) don't
> > > really
> > > > > interact with the OSG - that's all handled by my own C++ API. I'm
> > > just
> > > > > not sure how well all this would glue together using C#.
> > > > >
> > > > > Can some of the veterans comment?
> > > > >
> > > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > 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
> >
> >
>
> _______________________________________________
> 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