Paul,

It looks like my failure is in OcclusionQueryNode, line 235:
ext->glGetQueryObjectiv( tr->_id, GL_QUERY_RESULT, &(tr->_numPixels) );

Looking at the code & comments, I'm guessing that we don't have a valid extensions pointer for both graphics cards when we get to this code.

What are your thoughts on how to resolve this? The VR Juggler OSG application uses SceneView. Do you think changing to osgViewer::Viewer would resolve the issue?

-Todd

Todd J. Furlong wrote:
Paul,

Thanks, I will dig deeper. I've been in touch with Doug in the past about VR Juggler & OSG interaction, and we were able to squash a bug or two on the VR Juggler side. However, my configuration (multiple graphics cards on one machine) tends to turn up more issues.

-Todd

Paul Martz wrote:
OQN is used by VE-Suite, which is a VR Juggler-based app, so VR Juggler
doesn't inhibit OQN usage. But your app will need to take responsibility to
perform operations normally done by osgViewer and not done by VR Juggler.

You'll need to debug this to determine what's going wrong, so make a very
simple test case, then set some breakpoints down where OQN makes calls into the extension. You might also instrument the OQN code to call glGetError(),
for example.
   -Paul


Paul,

See my responses below. I wonder if I am running into issues because my application uses VR Juggler?

Thanks,
Todd

Paul Martz wrote:
Wow, suddenly everyone is using OQN. :-)
It is a very cool feature!

OSG performs two cull/draw pairs in the situation you describe, and OQN is designed to perform separate queries for each active
context,
so is designed for just this case. There is nothing special or additional you need to do to make OQN work for
multidisplay. Indeed,
this works fine on multidisplay Windows and Mac OS X platforms.

Your stack trace doesn't tell me much.
Let me know if there is more info that would help.

Some things to try:

1) If you set OSG_NOTIFY_LEVEL=DEBUG and look at the
displayed list of
OpenGL extensions, is occlusion query supported?
Yes, it is.

2) Do you have an up-to-date OpenGL driver?
Yes, Nvidia driver 169.12 for x86_64 Linux.

3) What happens if you force OSG_THREADING=SingleThreaded?
Same results.

Paul Martz
Skew Matrix Software LLC
http://www.skew-matrix.com
+1 303 859 9466



My OSG App renders to two screens (:0.0 & :0.1) of Linux
system.  If
I use an OcclusionQueryNode as my root, it crashes in this configuration.

First I get these messages:

Warning: detected OpenGL error 'invalid operation' after
RenderBin::draw(,)
Warning: detected OpenGL error 'invalid operation'

Then a series of these:

Warning: detected OpenGL error 'invalid operation' at start of
State::apply()

Then a crash:

*** glibc detected *** ./app.bin: malloc(): memory
corruption (fast):
0x00002aaab0190e66 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3a0f8725e0]
/lib64/libc.so.6(__libc_malloc+0x7d)[0x3a0f872e8d]
/usr/lib64/libGLcore.so.1[0x3488fd8114]

I assume that I need separate instances per GL context to
make this
work, but I am looking for advice as to how to implement?

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

--
Todd J. Furlong
Inv3rsion, LLC
http://www.inv3rsion.com
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to