[osg-users] Problems getting a model to render using OSG in an MFC application

Ümit Uzun umituzun84 at gmail.com
Thu Sep 25 02:00:29 PDT 2008


Hi Jesper,

Anyone couldn't find your problem by this way, but problem looks like
simple. I advice you to look at cOSG class and Render threads activation way
in osgviewerMFC example. I think there is render thread activation problem.
You can change clear color  but can't render scene. So I think problem is
threading activation.

I hope have answered your question.
Best Regards.

Umit Uzun

2008/9/25 Jesper D. Thomsen <jdt at anybodytech.com>

>  Hi all, first posting here, so be gentle.
>
> I'm trying to integrate OSG in an existing MFC application in place of a
> temporary custom OpenGL renderer.
>
> I have looked at the osgviewermfc example and based my code on that. So far
> I have got a viewer up and running with a single master camera. I have
> tested that the camera is being redrawn by changing the clear-color to a
> random value every frame. When I assign scenedata to the viewer there is
> nothing being drawn however.
>
> I am using the following code in my CView::Oncreate:
>
> ------------------------
>
> // Create a trackball manipulator
>
> trackball =
> new osgGA::TrackballManipulator();
>
> // Create a Manipulator Switcher
>
> keyswitchManipulator =
> new osgGA::KeySwitchMatrixManipulator;
>
> // Add our trackball manipulator to the switcher
>
> keyswitchManipulator->addMatrixManipulator(
> '1', "Trackball", trackball);
>
> // Init the switcher to the first manipulator (in this case the only
> manipulator)
>
> keyswitchManipulator->selectMatrixManipulator(0);
> // Zero based index Value
>
> // Init the main Root Node/Group
>
> mRoot =
> new osg::Group;
>
>  // Load the Model from the model name
>
>  mModel = osgDB::readNodeFile(
> "c:/cow.osg");
>
> //// Optimize the model
>
> //osgUtil::Optimizer optimizer;
>
> //optimizer.optimize(mModel);
>
> //optimizer.reset();
>
> // Add the model to the scene
>
> mRoot->addChild(mModel);
>
> // Local Variable to hold window size data
>
> RECT rect;
>
> // Create the viewer for this window
>
> mViewer =
> new osgViewer::Viewer();
>
> // Add a Stats Handler to the viewer
>
> mViewer->addEventHandler(
> new osgViewer::StatsHandler);
>
> // Get the current window size
>
> ::GetWindowRect(m_hWnd, &rect);
>
> // Init the GraphicsContext Traits
>
> traits =
> new osg::GraphicsContext::Traits;
>
> // Init the Windata Variable that holds the handle for the Window to
> display OSG in.
>
> windata =
> new osgViewer::GraphicsWindowWin32::WindowData(m_hWnd);
>
> // Setup the traits parameters
>
> 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->setInheritedWindowPixelFormat =
> true;
>
> traits->inheritedWindowData = windata;
>
> // Create the Graphics Context
>
> gc = osg::GraphicsContext::createGraphicsContext(traits);
>
> // Init a new Camera (Master for this View)
>
> osg_camera =
> new osg::Camera;
>
> // Assign Graphics Context to the Camera
>
> osg_camera->setGraphicsContext(gc);
>
> // Set the viewport for the Camera
>
> osg_camera->setViewport(
> new osg::Viewport(traits->x, traits->y, traits->width, traits->height));
>
> // Add the Camera to the Viewer
>
> mViewer->addSlave(osg_camera);
>
> // Add the Camera Manipulator to the Viewer
>
> mViewer->setCameraManipulator(keyswitchManipulator);
>
> // Set the Scene Data
>
> mViewer->setSceneData(mRoot);
>
> // Realize the Viewer
>
> mViewer->realize();
>
> -----------------
>
>
>
> And in my views OnDraw I use the following:
>
>
>
> --------------------
>
> float r = (float) rand()/RAND_MAX;
>
> float g = (float) rand()/RAND_MAX;
>
> float b = (float) rand()/RAND_MAX;
>
> float a = (float) rand()/RAND_MAX;
>
> osg_camera->setClearColor( osg::Vec4(r,g,b,a) );
>
> mViewer->frame();
>
> --------------------
>
>
>
> As far as I can tell the osgviewermfc uses pretty much the same code.
>
> Any and all help and hint as to what I'm doing wrong would be much
> appreciated.
>
>
>
> Regards, and thanks in advance.
>
>
>
> Jesper D. Thomsen
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080925/4844be54/attachment-0003.htm>


More information about the osg-users mailing list