Re: [osg-users] OSG and WPF Questions

2009-09-29 Thread Rick Pingry
Hi,

I am interested in WPF development as well.  I have been playing around with 
the C++/CLI example to make a managed window.  It seemed to work ok, except 
when I tried running it in Release mode, in which case it kept crashing, 
apparently with some memory corruption errors.

I am using a relatively new snapshot from SVN for my OpenSceneGraph library.  I 
have been using it in C++ for quite some time now with not too many problems 
(none that this great community has not helped with so far) :)

I also started playing with OsgDotNet wrappers, but when I run it, it crashes 
trying to create the osgShadow wrapper.  I noticed that it was made for OSG 
2.0, so I downloaded that, but the download I had seems to be missing osgViewer 
in the include directories.

I would love to know how you are able to get the DotNet stuff working, in one 
of these options.  

Thank you!

Cheers,
Rick

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=17729#17729





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-08-05 Thread Martin Fleck
Hello everyone,

sorry for not writing so long, but I've been quite busy. I've tried some things 
to integrate OSG in .NET, but none of the solutions were satisfactory. 
As stated by Brian above, the WPF popup windows were flickering and I didn't 
manage to get the rendering to texture to work. 
Then I tried WinForms and there also at least the shadow of those windows were 
flickering. :(

Now my boss said I should leave .NET aside and said I should try using the 
Fox-Toolkit. So everyone thank you for your help in .NET, but seems like I 
won't work on this topic any further.

Cheers,
Martin

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=15810#15810





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-30 Thread Brian Stewart
Hi Martin,

I replied to your message earlier, but I thought I would post my experience 
here for the benefits of those reading this thread down the line:

What I did was create a WinForms Control that hosts the OSG window. Look for 
examples (theres a good one on CodeProject I think) of integrating WPF and 
OpenGL. OSG will be the same. This is necessary because WPF uses HWNDs only for 
the top-level window - everything below is DirectX. But a WinForms control has 
an HWND, and WPF has an interoperability feature where it can host WinForms 
controls. 

There are limitations however - principally that transparent WPF popup windows 
(used for messages, menus, etc) do not show up properly over the OSG window 
under XP on most NVIDIA graphics cards (non-Quadro cards), according to NVIDIA. 
One possible workaround would be to have OSG render to a texture and then blit 
that to a WPF canvas. I have been intending to do this - but have not gotten 
around to it yet.  Currently I just structured my menus to avoid the overlap.

I should also mention that it is useful to crank up the OSG render loop during 
the initialization of the control - not at construction, IIRC.

There are a few other hurdles, like having to use the dispatcher to update WPF 
UI widgets, when the update originates from OSG - but these type of threading 
issues are to be expected in this type of app anyway. A lot of my daily pain 
comes from having to drill a piece of information down through several layers 
of code (abstraction layers for threading and for the managed/native 
transition) to get from the UI to the OSG render loop, which is again, to be 
expected. I have found a couple of issues with events, such as WPF not passing 
drag events (that originated from outside the app) down to OSG - which I dealt 
with by handling the events at the WinForms level, and then drilling down the 
mouse drag info to my OSG render loop.

Best of luck,
Brian

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=15651#15651





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] OSG and WPF Questions

2009-07-29 Thread Martin Fleck
Hello,

I'm new to OSG and WPF (though I've read quite a view tutorials the past 2 
weeks) so I hope I don't ask too many stupid questions :)

Task
I have to program something very similar to a CAD-program. The program should 
be able to load files (stl-files) and you should be able to manipulate the 
model in different ways, selecting triangles, points, cutting, ...
For the visualisation of the models and functionality I chose OSG since it 
seems to offer quite a lot and is pretty fast. (Also it has a reader for 
stl-files ;) )
The UI has to be made with WPF. So basically the OSG-window should be 
controlled via menus, buttons, mouse and keyboard-input.

What I found out
For the past view days I've researched this matter and found only a few 
tutorials on msdn and codeproject. But if I got that right the way to do the 
integration is:
- C++: create a class (OpenGLHwnd) that inherits from HwndHost
- C++: create a window (or a dialog, but dialog didn't work for me) 
- C++: attach the viewer with the window (code taken from this site ... 
.NET-control ...)
- C++: compile the whole thing as managed dll (/clr)
- C#/WPF: use the dll and attach an instance of the class as child in a 
placeholder

In the OpenGLHwnd-class I have to override BuildWindowCore, DestroyWindowCore, 
OnRenderSizeChanged and OnRender.

Status
Well, I just set up the whole thing and tried to make the OpenGL-window fit 
in the WPF-application. In this OpenGL-Window I just try to display two 
pyramids using OSG.

My Problem
If I use normal OpenGL-commands everything is displayed, but if I use the 
viewer, somehow not only the WPF-window is opened, but also an additional 
fullscreen window which shows the pyramids. I don't seem to get the window out 
of the fullscreen mode and fit in the WPF-application.

My Questions
Well, can anyone give me some advise to fix the problem? Or can someone tell me 
if the way I want to integrate OSG in WPF is right, because it seems pretty 
much like a bad workaround to me ^^;
Are there any tutorials on this matter? (I've looked at the osgDotNetDemo from 
hesicong.net, but it doesn't work - applicationcan't be initialized)

I hope everything is understandable since english is not my mother tounge.

Thank you in advance!

Cheers,
Martin

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=15581#15581





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-29 Thread Martin Fleck
Hi,

seems like the 5 posts above should be in a new topic ^^;

Addition to my post: I got the osgNETDemo running, but still its WindowsForms 
and not WPF, so I'd still be happy about any advise /help someone could give me 
:)

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=15594#15594





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-29 Thread Can T. Oguz
Hi Martin,

You can capsulate the OSG-stuff in an ActiveX component also. Even though I
don't like COM technology, it may be useful in some cases. Please be careful
about singletons and module globals.

Can

2009/7/29 Martin Fleck eladamri...@hotmail.com

 Hello,

 I'm new to OSG and WPF (though I've read quite a view tutorials the past 2
 weeks) so I hope I don't ask too many stupid questions :)

 Task
 I have to program something very similar to a CAD-program. The program
 should be able to load files (stl-files) and you should be able to
 manipulate the model in different ways, selecting triangles, points,
 cutting, ...
 For the visualisation of the models and functionality I chose OSG since it
 seems to offer quite a lot and is pretty fast. (Also it has a reader for
 stl-files ;) )
 The UI has to be made with WPF. So basically the OSG-window should be
 controlled via menus, buttons, mouse and keyboard-input.

 What I found out
 For the past view days I've researched this matter and found only a few
 tutorials on msdn and codeproject. But if I got that right the way to do the
 integration is:
 - C++: create a class (OpenGLHwnd) that inherits from HwndHost
 - C++: create a window (or a dialog, but dialog didn't work for me)
 - C++: attach the viewer with the window (code taken from this site ...
 .NET-control ...)
 - C++: compile the whole thing as managed dll (/clr)
 - C#/WPF: use the dll and attach an instance of the class as child in a
 placeholder

 In the OpenGLHwnd-class I have to override BuildWindowCore,
 DestroyWindowCore, OnRenderSizeChanged and OnRender.

 Status
 Well, I just set up the whole thing and tried to make the OpenGL-window
 fit in the WPF-application. In this OpenGL-Window I just try to display
 two pyramids using OSG.

 My Problem
 If I use normal OpenGL-commands everything is displayed, but if I use the
 viewer, somehow not only the WPF-window is opened, but also an additional
 fullscreen window which shows the pyramids. I don't seem to get the window
 out of the fullscreen mode and fit in the WPF-application.

 My Questions
 Well, can anyone give me some advise to fix the problem? Or can someone
 tell me if the way I want to integrate OSG in WPF is right, because it seems
 pretty much like a bad workaround to me ^^;
 Are there any tutorials on this matter? (I've looked at the osgDotNetDemo
 from hesicong.net, but it doesn't work - applicationcan't be initialized)

 I hope everything is understandable since english is not my mother tounge.

 Thank you in advance!

 Cheers,
 Martin

 --
 Read this topic online here:
 http://forum.openscenegraph.org/viewtopic.php?p=15581#15581





 ___
 osg-users mailing list
 osg-users@lists.openscenegraph.org
 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-29 Thread Andrew Burnett-Thompson
Hi Martin,

From memory (I've worked with WPF before), each WPF control has at its root
an HWND handle, which is what the osgDotNet demo uses to bind the open scene
graph to the Windows forms control.

So I think if you substitute the HWND handle with the WPF HWND the osgDotNet
stuff should work.

Here - I'm using this (but Windows Forms) to initialise an OpenSceneGraph on
a WinForms user control (which is probably very similar to the osgDotNet
demo)

Try googling WPF HWND Interop and see what you come up with. Apologies if
you have already tried this.

Also I don't know how to stop the other window appearing - that sounds like
an OSG problem and I'm no expert in OSG!!

Cheers,
Andrew

/

void RenderSurfaceView::InitOSG()
{
RECT rect;

// Get the UserControl's Win32 handle
HWND mHwnd=(HWND)this-Handle.ToInt32();

// Get the client area
GetWindowRect(mHwnd, rect);

// Create a WindowData struct from the Win32 Handle
// WindowData is used to pass in the Win32 window handle attached
the GraphicsContext::Traits structure
osg::ref_ptrosg::Referenced windata = new
osgViewer::GraphicsWindowWin32::WindowData(mHwnd);
osg::ref_ptrosg::GraphicsContext::Traits traits = new
osg::GraphicsContext::Traits;

// Now setup the GraphicsContext::Traits by setting width, height, x
position, y position etc...
traits-x = 0;
traits-y = 0;
traits-width = rect.right - rect.left;
traits-height = rect.bottom - rect.top;
traits-windowDecoration = false;
traits-doubleBuffer = true;
traits-sharedContext = 0;
traits-inheritedWindowData = windata;

// We must set the pixelformat before we can create the OSG
Rendering Surface
PIXELFORMATDESCRIPTOR pixelFormat =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
24,
0,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
};

// Get the device context for the Win32 handle to the control
HDC hdc = ::GetDC(mHwnd);
if (hdc==0)
{
::DestroyWindow(mHwnd);
return ;
}

// Set the pixel format on the device context
int pixelFormatIndex = ::ChoosePixelFormat(hdc, pixelFormat);
if (pixelFormatIndex==0)
{
::ReleaseDC(mHwnd, hdc);
::DestroyWindow(mHwnd);
return ;
}

if (!::SetPixelFormat(hdc, pixelFormatIndex, pixelFormat))
{
::ReleaseDC(mHwnd, hdc);
::DestroyWindow(mHwnd);
return ;
}

// Create an Open Scene Graph graphics context
osg::ref_ptrosg::GraphicsContext gc =
osg::GraphicsContext::createGraphicsContext(traits);

// Create an Open Scene Graph camera
this-camera = new osg::Camera;

osg::CullSettings::CullingMode cullMode =
osg::CullSettings::ENABLE_ALL_CULLING;

// Force all culling on
camera-setCullingMode(cullMode);

// Set the graphics context on the camera and the viewport
camera-setGraphicsContext(gc);
camera-setViewport(new
osg::Viewport(0,0,traits-width,traits-height));
camera-setDrawBuffer(GL_BACK);
camera-setReadBuffer(GL_BACK);

// Finally, create an osgViewer instance and add the camera to it
this-osgViewer = new osgViewer::Viewer();

osgViewer-getCamera()-setClearColor(osg::Vec4(0.8,0.8,0.8,1));
osgViewer-addSlave(camera);

   // ..


// Run the Open Scene Graph thread
RunOSG();

// And set the Is Initialised flag
this-osgInitialised = true;
}

/

On Wed, Jul 29, 2009 at 1:50 PM, Martin Fleck eladamri...@hotmail.comwrote:

 Hi,

 seems like the 5 posts above should be in a new topic ^^;

 Addition to my post: I got the osgNETDemo running, but still its
 WindowsForms and not WPF, so I'd still be happy about any advise /help
 someone could give me :)

 --
 Read this topic online here:
 http://forum.openscenegraph.org/viewtopic.php?p=15594#15594





 ___
 osg-users mailing list
 osg-users@lists.openscenegraph.org
 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-29 Thread Sergey Kurdakov
Hi All.

the following link might be of some help

http://www.codeproject.com/KB/WPF/WPFOpenGL.aspx

Regards
Sergey
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-29 Thread Martin Fleck
Hello everyone, thank you for your replies :)

@Sergey: Thank you but I've tried exactly that, but the problem is that I want 
to integrate the window in the WPF-application and not open another window :(

@Andrew: If I'm not wrong WPF uses only one HWND for the whole application. I 
guess that is where the problem lies, maybe I mix up my handlers. Anyway thank 
you for the code, maybe another way is to create a winforms-control and embed 
it into WPF (though it seems very strange OSG-Winforms-WPF).

@Can: OK, I've never worked with ActiveX before so I'm not sure what you're 
talking about, but I'll research it, thanks.

Again, thank you all, it's great that there are people here willing to help 
(and so fast :D)

--
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=15602#15602





___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] OSG and WPF Questions

2009-07-29 Thread Can T. Oguz
Hi Again,

Please check out osgActiveX. You'll see that viewer is capsulated as an MFC
ActiveX control.

Regards,

Can

2009/7/29 Martin Fleck eladamri...@hotmail.com

 Hello everyone, thank you for your replies :)

 @Sergey: Thank you but I've tried exactly that, but the problem is that I
 want to integrate the window in the WPF-application and not open another
 window :(

 @Andrew: If I'm not wrong WPF uses only one HWND for the whole application.
 I guess that is where the problem lies, maybe I mix up my handlers. Anyway
 thank you for the code, maybe another way is to create a winforms-control
 and embed it into WPF (though it seems very strange OSG-Winforms-WPF).

 @Can: OK, I've never worked with ActiveX before so I'm not sure what you're
 talking about, but I'll research it, thanks.

 Again, thank you all, it's great that there are people here willing to help
 (and so fast :D)

 --
 Read this topic online here:
 http://forum.openscenegraph.org/viewtopic.php?p=15602#15602





 ___
 osg-users mailing list
 osg-users@lists.openscenegraph.org
 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] OSG and WPF Questions

2009-07-29 Thread Sergey Kurdakov
Hi Martin.

but the problem is that I want to integrate the window in the
WPF-application and not open another window :(

take a closer look at OpenGLUserControl.h - it is a control with HWND for
WPF.

Regards
Sergey
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org