How do I track down what is causing this error?
Below is some sample output from running osgScreenCapture with different
options, note that any pbo option causes the error, but I'm sort of at a loss
on figuring out what the error might be.
>
> --no-pbo
> Reading window usig glReadPixels, with out PixelBufferObject.
> fps = 9.549, full frame copy = 8.4498ms rate = 208.76 Mpixel/sec, copy speed
> = 597.28 Mb/sec
> fps = 9.5965, full frame copy = 8.8676ms rate = 198.93 Mpixel/sec, copy speed
> =569.13 Mb/sec
> fps = 9.5432, full frame copy = 8.1697ms rate = 215.92 Mpixel/sec, copy speed
> =617.75 Mb/sec
> fps = 9.5415, full frame copy = 8.6215ms rate = 204.6 Mpixel/sec, copy speed
> = 585.38 Mb/sec
>
> --single-pbo
> Warning: detected OpenGL error 'invalid operation' at start of State::apply()
> fps = 59.232, full frame copy = 1.1492ms rate = 1534.9 Mpixel/sec, 4391.4
> Mb/sec time for memcpy = 1.1446ms memcpy speed = 4409.4 Mb/sec
> Warning: detected OpenGL error 'invalid operation' at start of State::apply()
> fps = 57.98, full frame copy = 11.127ms rate = 158.54 Mpixel/sec, 453.57
> Mb/sec time for memcpy = 1.2396ms memcpy speed = 4071.4 Mb/sec
>
> --double-pbo
> Warning: detected OpenGL error 'invalid operation' at start of State::apply()
> fps = 57.645, full frame copy = 10.735ms rate = 164.32 Mpixel/sec, 470.11
> Mb/sec time for memcpy = 1.409ms memcpy speed = 3581.8 Mb/sec
> fps = 57.613, full frame copy = 1.1572ms rate = 1524.4 Mpixel/sec, 4361.4
> Mb/sec time for memcpy = 1.154ms memcpy speed = 4373.2 Mb/sec
>
> --triple-pbo
> Warning: detected OpenGL error 'invalid operation' at start of State::apply()
> fps = 59.373, full frame copy = 10.03ms rate = 175.87 Mpixel/sec, 503.17
> Mb/sec time for memcpy = 1.2871ms memcpy speed = 3921.2 Mb/sec
> fps = 59.397, full frame copy = 1.122ms rate = 1572.2 Mpixel/sec, 4498 Mb/sec
> time for memcpy = 1.1189ms memcpy speed = 4510.6 Mb/sec
>
Below is the code that "appears" to be causing the problem, however when I add
the glGetError() after each of the gl Calls, then the problem goes away, AND
errorNo is always 0 because the assert never triggers
Code:
inline void applyProjectionMatrix(const osg::RefMatrix* matrix)
{
if (_projection!=matrix)
{
GLenum errorNo = glGetError();
assert(errorNo == 0);
glMatrixMode( GL_PROJECTION );
errorNo = glGetError();
assert(errorNo == 0);
if (matrix)
{
_projection=matrix;
glLoadMatrix(matrix->ptr());
errorNo = glGetError();
assert(errorNo == 0);
}
else
{
_projection=_identity;
glLoadIdentity();
errorNo = glGetError();
assert(errorNo == 0);
}
glMatrixMode( GL_MODELVIEW );
errorNo = glGetError();
assert(errorNo == 0);
}
}
PS, why are there all those goofy characters in the code? I converted all the
tabs to spaces before I pasted the code in!?![/quote]
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=21894#21894
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org