I’ve also confirmed that the graphics context seems correct, through the debugger and also in that I can comment out the OSG code and make direct calls to OpenGL (including creating display lists before the first frame) and everything works fine. Remove the OpenGL calls and substitute in a SceneView and display list creation fails …

 

Slightly off the topic, but does anyone know if OSG has very particular requirements for the creation of the window/device context on Win32? For me, this seems the most likely cause of a problem (relating to the wxWidgets toolkit). I’m no Win32 guru, so pointers to references would be most appreciated (with some googling on my behalf of course!).

 

Interesting.  We had valid graphic contexts and were still seing the same problem.  The correct thread was being used to compile the displays lists as well.  We verified all of this through the debugger.

Ryan Kawicki
Software Engineer
The Boeing Company
Training Systems and Services
(314) 777 - 6863

 

 


From: Robert Osfield [mailto:[EMAIL PROTECTED]
Sent: Tuesday, August 22, 2006 4:27 AM
To: osg users
Subject: Re: [osg-users] Producer and Win32

Hi Gian,

The SceneView::init() does a traversal that compiles display lists and texture objects, it therefore must only be called from a thread with a valid graphics context.

Robert.

On 8/21/06, Gian Lorenzetto <[EMAIL PROTECTED]> wrote:

Hi Ryan,

Thanks for the info. Adding sceneview->init() his indeed has fixed the
problem.

>From my trips through the debugger I know the problem lies in the
display list construction during the cull traversal, which is triggered
by the call to camera->accept(...).

By calling init() on sceneview BEFORE adding any objects to the scene
the camera->accept(...) is called early (in the init() method), with no
display list creation as there is no geometry!

I am using an NVidia card. Will try this out on an ATI later today and
confirm if the driver is indeed playing a part in all this.

Thanks for the help - thought I was going mad for a while! Good to know
there was a work-around for this.

Cheers,
Gian

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto: osg-users-
> [EMAIL PROTECTED]] On Behalf Of Kawicki, Ryan H
> Sent: Tuesday, 22 August 2006 12:44 AM
> To: osg users
> Subject: RE: [osg-users] Producer and Win32
>
> We had the same problem and this is what we did to correct the
problem.
> Actually, some of the machines that we ran on would produce the black
> screen while others would crash when trying to call glGenTextures.  We
> tracked to problem down the Init function and display lists.  If any
> drawable was using a display list, the problem would happen.
>
> What we did to correct the problem was this.
>
> Call the default and then call the init on the scene view and then
> attach any nodes to the scene.
> m_SceneView->setDefaults();
> m_SceneView->init();
>
> As for the reason this is happening.  I am not quite sure.  I can tell
> you that it only happened for us on our Nvidia based cards.  Non of
the
> ATI cards we had was experiencing this same problem.
>
>
> Ryan Kawicki
> Software Engineer
> The Boeing Company
> Training Systems and Services
> (314) 777 - 6863
>
> -----Original Message-----
> From: J.P. Delport [mailto:[EMAIL PROTECTED]]
> Sent: Monday, August 21, 2006 2:02 AM
> To: osg users
> Subject: Re: [osg-users] Producer and Win32
>
> Hi Gian,
>
> I'm afraid I'm at a loss as what could be your problem and cannot
> reproduce it as I'm not using OSG 1.1.1 on win32 at the moment.
>
> I think it might be useful to create the simplest example of the
problem
> using GLUT. It might then be possible for more people to test it and
we
> might also learn if the problem is with wx or with Sceneview init.
>
> rgds
> jp
>
> Gian Lorenzetto wrote:
> > Hi,
> >
> > I've tried modifying the pixelbuffer, but still no joy.
> >
> > I've since taken the cube opengl sample from the wxWidgets 2.6.3
> distribution and converted it to load a model and use SceneView for
> rendering. Compiled against 1.0rc4 this works fine, with both models
> using display lists and models not using display lists.
> >
> > Compiled against 1.1.1rc1 models using display lists result in a
black
> screen.
> >
> > This is what my init looks like:
> >
> > SetCurrent();
> >
> > loadedModel = osgDB::readNodeFile("cow.osg");
> >
> > sceneView = new osgUtil::SceneView;
> >
> > sceneView->setDefaults();
> >
> > sceneView->setSceneData(loadedModel);
> >
> >
> > The render loop looks like:
> >
> > wxPaintDC dc(this);
> >
> > #ifndef __WXMOTIF__
> >
> > if (!GetContext()) return;
> >
> > #endif
> >
> > SetCurrent();
> >
> > // Init OpenGL once, but after SetCurrent
> >
> > if (!m_init)
> >
> > {
> >
> > InitGL();
> >
> > m_init = true;
> >
> > start_tick = osg::Timer::instance()->tick();
> >
> > }
> >
> > // set up the frame stamp for current frame to record the current
time
>
> > and frame number so that animtion code can advance correctly
> >
> > osg::ref_ptr<osg::FrameStamp> frameStamp = new osg::FrameStamp;
> >
> >
frameStamp->setReferenceTime(osg::Timer::instance()->delta_s(start_tic
> > frameStamp->k,osg::Timer::instance()->tick()));
> >
> > frameStamp->setFrameNumber(frameNum++);
> >
> > // pass frame stamp to the SceneView so that the update, cull and
draw
>
> > traversals all use the same FrameStamp
> >
> > sceneView->setFrameStamp(frameStamp.get());
> >
> > sceneView->setViewport(0, 0, width, height);
> >
> > const osg::BoundingSphere& bs = loadedModel->getBound();
> >
> > osg::Matrix viewMatrix;
> >
> >
viewMatrix.makeLookAt(bs.center()-osg::Vec3(0.0,2.0f*bs.radius(),0.0),
> > bs.center(),osg::Vec3(0.0f,0.0f,1.0f));
> >
> > sceneView->setViewMatrix(viewMatrix);
> >
> > // do the update traversal the scene graph - such as updating
> > animations
> >
> > sceneView->update();
> >
> > // do the cull traversal, collect all objects in the view frustum
into
>
> > a sorted set of rendering bins
> >
> > sceneView->cull();
> >
> > // draw the rendering bins.
> >
> > sceneView->draw();
> >
> > SwapBuffers();
> >
> > There's no other OSG code really.
> >
> > BTW Apologies for the formatting, but I'm using a web based email
> client and I can't seem to change the weird line spacing on the pasted
> code.
> >
> > Cheers,
> > Gian
> >
> > ________________________________
> >
> > From: [EMAIL PROTECTED] on behalf of J.P. Delport
> > Sent: Sat 19/08/2006 12:05 AM
> > To: osg users
> > Subject: Re: [osg-users] Producer and Win32
> >
> >
> >
> > Hi,
> >
> > I create my class derived from wxGLCanvas like so:
> >
> > // Canvas
> > int attribList[] = {WX_GL_RGBA, WX_GL_DOUBLEBUFFER,
> >         WX_GL_DEPTH_SIZE, 32,
> >         WX_GL_MIN_RED, 8,
> >         WX_GL_MIN_GREEN, 8,
> >         WX_GL_MIN_BLUE, 8,
> >         WX_GL_MIN_ALPHA, 8,
> >         WX_GL_AUX_BUFFERS, 1,
> >         0};
> >
> > m_CViewGLCanvas = new CViewGLCanvas(this,
> >                         -1,
> >                         wxPoint(0, 0),
> >                         wxSize(512, 512),
> >                         wxNO_BORDER,
> >                         wxT("CViewGLCanvas"),
> >                         attribList);
> >
> > jp
> >
> >
> > Gian Lorenzetto wrote:
> >> Tried rearranging a few things but to no avail ... one thing I did
> notice is that the default visual for wxGLCanvas is 16bit - do you
> change the pixel format at all?
> >>
> >> I'm also down to a pretty trivial example case, with only a single
> window, so it's got to be something with my class derived from
> wxGLCanvas or my build env ...
> >>
> >>
> >> -----Original Message-----
> >> From: [EMAIL PROTECTED] on behalf of J.P.
Delport
> >> Sent: Fri 8/18/2006 11:20 PM
> >> To: osg users
> >> Subject: Re: [osg-users] Producer and Win32
> >>
> >> Hi,
> >>
> >> according to grep, that is indeed the only place I call it. I am
only
>
> >> using a single context, so I'm not sure if the usage would change
for
>
> >> multiple contexts.
> >>
> >> rgds
> >> jp
> >>
> >> Gian Lorenzetto wrote:
> >>> Thanks for that. So is that the only time you call SetCurrent()?
I'm
> calling it in my render method (called from OnIdle), as well as before
> my initialisation code (which is actually not required now ...), but
not
> in the OnPaint handler.
> >>>
> >>> To be honest I never really worried too much about it as it has
> always worked, but perhaps I'm misusing SetCurrent in some way.
> >>>
> >>> -----Original Message-----
> >>> From: [EMAIL PROTECTED] on behalf of J.P.
Delport
> >>> Sent: Fri 8/18/2006 11:00 PM
> >>> To: osg users
> >>> Subject: Re: [osg-users] Producer and Win32
> >>>
> >>> Hi,
> >>>
> >>> my update/cull/draw is all inside onIdle.
> >>>
> >>> In onPaint there is only the following:
> >>>
> >>> --8<---
> >>> onPaint(wxPaintEvent& e)
> >>> {
> >>>     wxPaintDC dc(this);
> >>>
> >>> #ifndef __WXMOTIF__
> >>>     if (!GetContext()) return;
> >>> #endif
> >>>
> >>>     SetCurrent();
> >>>
> >>> }
> >>> --8<---
> >>>
> >>> rgds
> >>> jp
> >>>
> >>> Gian Lorenzetto wrote:
> >>>> Hey,
> >>>>
> >>>> Hmm ... do you actually perform the update/call/draw inside the
> handler or request a paint event and then perform the draw there? I
ask
> because I don't really use the OnPaint handler for much, other than to
> create a wxPaintDC.
> >>>>
> >>>> I also had to make some updates due to osgGA changing and perhaps
> I've created some strange timing issue with the rendering ...
> >>>>
> >>
> >>
---------------------------------------------------------------------
> >> ---
> >>
> >> _______________________________________________
> >> osg-users mailing list
> >> [email protected]
> >> http://openscenegraph.net/mailman/listinfo/osg-users
> >> http://www.openscenegraph.org/
> >
> > --
> > This message is subject to the CSIR's copyright, terms and
conditions
> > and e-mail legal notice. Views expressed herein do not necessarily
> > represent the views of the CSIR.
> >
> > CSIR E-mail Legal Notice
> > http://mail.csir.co.za/CSIR_eMail_Legal_Notice.html
> >
> > CSIR Copyright, Terms and Conditions
> > http://mail.csir.co.za/CSIR_Copyright.html
> >
> > For electronic copies of the CSIR Copyright, Terms and Conditions
and
> > the CSIR Legal Notice send a blank message with REQUEST LEGAL in the
> > subject line to [EMAIL PROTECTED].
> >
> >
> > This message has been scanned for viruses and dangerous content by
> > MailScanner, and is believed to be clean.  MailScanner thanks
Transtec
> Computers for their support.
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> > http://openscenegraph.net/mailman/listinfo/osg-users
> > http://www.openscenegraph.org/
> >
> >
> >
> >
> >
----------------------------------------------------------------------
> > --
> >
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> > http://openscenegraph.net/mailman/listinfo/osg-users
> > http://www.openscenegraph.org/
>
> --
> This message is subject to the CSIR's copyright, terms and conditions
> and e-mail legal notice. Views expressed herein do not necessarily
> represent the views of the CSIR.
>
> CSIR E-mail Legal Notice
> http://mail.csir.co.za/CSIR_eMail_Legal_Notice.html
>
> CSIR Copyright, Terms and Conditions
> http://mail.csir.co.za/CSIR_Copyright.html
>
> For electronic copies of the CSIR Copyright, Terms and Conditions and
> the CSIR Legal Notice send a blank message with REQUEST LEGAL in the
> subject line to [EMAIL PROTECTED].
>
>
> This message has been scanned for viruses and dangerous content by
> MailScanner, and is believed to be clean.  MailScanner thanks Transtec
> Computers for their support.
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://openscenegraph.net/mailman/listinfo/osg-users
> http://www.openscenegraph.org/
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://openscenegraph.net/mailman/listinfo/osg-users
> http://www.openscenegraph.org/
_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

 

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to