Hi, and thank you for answering.

I'm currently doing that by calling frame() within my OnDraw() handler, but I'm 
suspecting (without any proof) that it gets called too often somehow, and that 
there's some queuing within OSG that I'm not using properly. When calling a 
pure OpenGL rendering pipeline from OnDraw() (the old viewport renderer which 
OSG is replacing) I do not have the problem.

Jesper D. Thomsen
________________________________
From: [email protected] 
[[email protected]] On Behalf Of Can T. Oguz 
[[email protected]]
Sent: Monday, April 20, 2009 12:41 PM
To: OpenSceneGraph Users
Subject: Re: [osg-users] OpenScenegraph MFC application freezes in Vista when 
cpu is maxed out.


Hi,

You may want to try posting frame requests as windows messages (via 
PostMessage()). Call frame() within the handler.

Regards,

Can


2009/4/20 Jesper D. Thomsen <[email protected]<mailto:[email protected]>>
Hi all, I have a somewhat irritating error in Vista (and to a lesser degree 
Windows XP).

I'm using OSG 2.6.1 to render a viewport in an MFC application (built in Visual 
Studio 2005 SP1). I'm running in single-threaded mode (although I have tried 
multithreaded also without any luck). I'm manually calling frame when I want 
the viewport to be updated rather than using run(), as I don't want to waste 
cpu/gpu on redrawing a stationary viewport. My problem is that when I have a 
somewhat complex model loaded, the cpu-load on the single core sometimes spikes 
out at maximum load when doing updates fast (such as during a fast drag). When 
this happens the machine often freezes the OSG viewport (and the cpu load 
continues at maximum for a single core). In Vista I have to terminate the 
application, but in Windows XP I can change focus to another application window 
and the viewport returns to normal (0% cpu load) when I switch back to my 
application.

I'm all out of ideas as to exactly why this happens, as I don't completely 
understand if I'm allowed to call frame() rapidly or not. I'm looking for a 
function which can tell me if the previous frame() has completed, in order to 
not call a new frame() before the previous is done. I don't believe this should 
be necessary, but I have obviously done something to offend OSG :)
Any ideas or insights will be much appreciated.

regards, and thanks in advance.


Jesper D. Thomsen



_______________________________________________
osg-users mailing list
[email protected]<mailto:[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