Hi all,

I have an interesting problem to which I found a strange solution. I don't know 
why the solution works, and I'd like to know if anyone here could shed some 
light.

I have an OSG-based visualization API that is designed for use from within any 
user-provided GUI toolkit. All OpenGL rendering is done in a separate thread; 
the developer just needs to provide SetGLContext and SwapBuffers callback 
functions. Simple enough, and it works great with several GUI toolkits on 
Windows and Mac.

I recently started testing its use on OSX with an OpenMotif-based GUI toolkit 
called Winteracter. The problem I ran across happens when I get a resize 
message. I process the message in the OpenGL thread using a GUIEventHandler, 
which changes the appropriate viewport. However, while the viewport size does 
change, its origin does not shift to match the resized window's corner! So 
basically if I increase the window size, the newly exposed portions are left 
blank even though the rendered image does seem to get bigger, as if OSG thinks 
everything resized correctly. See the attached picture for an example.

After a lot of tinkering, I found that I can fix the problem if I call 
glXMakeCurrent to release and immediately reattach the context. This happens in 
the OpenGL thread when it's processing the resize event.

So, does anyone know WHY this solution (hack) works? Interestingly, everything 
works correctly if I use OSG's own X11-based viewer. It's only if I use 
Winteracter's OpenMotif-based window management to create a window that the 
resize issue happens.

Thanks!
Ravi

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




Attachments: 
http://forum.openscenegraph.org//files/resize_without_wglselect_117.png


_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to