Hi J.P,
I have no crash in singleThreaded mode. It is a random crash so I can
not be 100% sure, but it seems to be the problem.
So, what can cause a crash with Dynamic settings ? I have some, I'll
check them, but I'm not sure of what to search...
Thanks,
Vincent.
2009/1/13 J.P. Delport <jpdelp...@csir.co.za <mailto:jpdelp...@csir.co.za>>
Hi,
can you make it crash in singlethreaded mode? If not, check all
settings of "dynamic" on text nodes.
jp
Vincent Bourdier wrote:
Hi,
I allow myself to Up this topic...
Thanks,
Regards,
Vincent.
2009/1/12 Vincent Bourdier <vincent.bourd...@gmail.com
<mailto:vincent.bourd...@gmail.com>
<mailto:vincent.bourd...@gmail.com
<mailto:vincent.bourd...@gmail.com>>>
I think there is a real bug in the rendering of OsgText.
(2.6.1 release)
The bug does appear randomly... I get it with simple text in
a Hud,
updated each frame.
The bug is there :
/void Text::drawForegroundText(osg::State& state, const
GlyphQuads&
glyphquad, const osg::Vec4& colorMultiplier) const
{
unsigned int contextID = state.getContextID();
const GlyphQuads::Coords3& transformedCoords =
glyphquad._transformedCoords[contextID];
if (!transformedCoords.empty())
{
state.setVertexPointer( 3, GL_FLOAT, 0,
&(transformedCoords.front()));
state.setTexCoordPointer( 0, 2, GL_FLOAT, 0,
&(glyphquad._texcoords.front())); *//HERE :
glyphquad._texcoords is
void, but seems initiated *
*
//VS degogeur said content is [0]()*
if(_colorGradientMode == SOLID)
{
state.disableColorPointer();
glColor4f(colorMultiplier.r()*_color.r(),colorMultiplier.g()*_color.g(),colorMultiplier.b()*_color.b(),colorMultiplier.a()*_color.a());
}
else
{
state.setColorPointer( 4, GL_FLOAT, 0,
&(glyphquad._colorCoords.front()));
}
glDrawArrays(GL_QUADS,0,transformedCoords.size());
}
}/
Stack trace :
msvcp80d.dll!std::_Debug_message(const wchar_t *
message=0x01919bd0, const wchar_t * file=0x01918570, unsigned int
line=99) Ligne 24 C++
osg48-osgTextd.dll!std::_Vector_const_iterator<osg::Vec2f,std::allocator<osg::Vec2f>
>::operator*() Ligne 99 + 0x14 octets C++
osg48-osgTextd.dll!std::vector<osg::Vec2f,std::allocator<osg::Vec2f>
>::front() Ligne 772 + 0x24 octets C++
>
osg48-osgTextd.dll!osgText::Text::drawForegroundText(osg::State &
state={...}, const osgText::Text::GlyphQuads & glyphquad={...},
const osg::Vec4f & colorMultiplier={...}) Ligne 1726 + 0xb
octets C++
osg48-osgTextd.dll!osgText::Text::renderOnlyForegroundText(osg::State
& state={...}, const osg::Vec4f & colorMultiplier={...})
Ligne 1754
+ 0x14 octets C++
osg48-osgTextd.dll!osgText::Text::drawImplementation(osg::State
& state={...}, const osg::Vec4f & colorMultiplier={...}) Ligne
1369 C++
osg48-osgTextd.dll!osgText::Text::drawImplementation(osg::RenderInfo
& renderInfo={...}) Ligne 1253 C++
osg48-osgd.dll!osg::Drawable::draw(osg::RenderInfo &
renderInfo={...}) Ligne 895 + 0x13 octets C++
osg48-osgUtild.dll!osgUtil::RenderLeaf::render(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf *
previous=0x06f48618) Ligne 60 + 0x19 octets C++
osg48-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 419 + 0x19 octets C++
osg48-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 384 + 0x17 octets C++
osg48-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 469 + 0x35 octets C++
osg48-osgUtild.dll!osgUtil::RenderStage::drawImplementation(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 1235 C++
osg48-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 384 + 0x17 octets C++
osg48-osgUtild.dll!osgUtil::RenderStage::drawInner(osg::RenderInfo
&
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618, bool
& doCopyTexture=false) Ligne 832 C++
osg48-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 1090 + 0x1b octets C++
osg48-osgUtild.dll!osgUtil::RenderStage::drawPostRenderStages(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 1248 + 0x2c octets C++
osg48-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x06f48618) Ligne 1155 + 0x17 octets C++
osg48-osgUtild.dll!osgUtil::SceneView::draw() Ligne 1509 +
0x37 octets C++
osg48-osgViewerd.dll!osgViewer::Renderer::draw() Ligne
413 +
0xf octets C++
osg48-osgViewerd.dll!osgViewer::Renderer::operator()(osg::GraphicsContext
* context=0x021077e0) Ligne 640 + 0xf octets C++
osg48-osgd.dll!osg::GraphicsContext::runOperations()
Ligne 688
+ 0x33 octets C++
osg48-osgd.dll!osg::RunOperations::operator()(osg::GraphicsContext
*
context=0x021077e0) Ligne 135 C++
osg48-osgd.dll!osg::GraphicsOperation::operator()(osg::Object *
object=0x021077e0) Ligne 50 + 0x19 octets C++
osg48-osgd.dll!osg::OperationThread::run() Ligne 413 + 0x26
octets C++
osg48-osgd.dll!osg::GraphicsThread::run() Ligne 40 C++
ot11-OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void
* data=0x084edb7c) Ligne 113 + 0xf octets C++
msvcr80d.dll!_callthreadstartex() Ligne 348 + 0xf
octets C
msvcr80d.dll!_threadstartex(void * ptd=0x07007650)
Ligne 331 C
kernel32.dll!7c80b683() [Les frames
ci-dessous sont peut-être incorrects et/ou
manquants, aucun symbole chargé pour kernel32.dll]
ntdll.dll!7c92b686()
I just tried it with osg SVN : nearly the same error
in :
/void Text::renderOnlyForegroundText(osg::State& state, const
osg::Vec4& colorMultiplier) const
{
for(TextureGlyphQuadMap::iterator
titr=_textureGlyphQuadMap.begin();
titr!=_textureGlyphQuadMap.end();
++titr)
{
// need to set the texture here...
state.applyTextureAttribute(0,titr->first.get());
const GlyphQuads& glyphquad = titr->second; *//HERE :
titr->second seems to be invalid (VS said more than 800 000 000
_glyphs ...)*
drawForegroundText(state, glyphquad, colorMultiplier);
}
}/
Stack trace
msvcp80d.dll!std::_Debug_message(const wchar_t *
message=0x01947d68, const wchar_t * file=0x01946a90, unsigned int
line=245) Ligne 24 C++
osg54-osgTextd.dll!std::_Tree<std::_Tmap_traits<osg::ref_ptr<osgText::Font::GlyphTexture>,osgText::Text::GlyphQuads,std::less<osg::ref_ptr<osgText::Font::GlyphTexture>
>,std::allocator<std::pair<osg::ref_ptr<osgText::Font::GlyphTexture>
const ,osgText::Text::GlyphQuads> >,0>
>::const_iterator::operator*() Ligne 245 + 0x17 octets C++
osg54-osgTextd.dll!std::_Tree<std::_Tmap_traits<osg::ref_ptr<osgText::Font::GlyphTexture>,osgText::Text::GlyphQuads,std::less<osg::ref_ptr<osgText::Font::GlyphTexture>
>,std::allocator<std::pair<osg::ref_ptr<osgText::Font::GlyphTexture>
const ,osgText::Text::GlyphQuads> >,0>
>::iterator::operator*() Ligne 452 C++
osg54-osgTextd.dll!std::_Tree<std::_Tmap_traits<osg::ref_ptr<osgText::Font::GlyphTexture>,osgText::Text::GlyphQuads,std::less<osg::ref_ptr<osgText::Font::GlyphTexture>
>,std::allocator<std::pair<osg::ref_ptr<osgText::Font::GlyphTexture>
const ,osgText::Text::GlyphQuads> >,0>
>::iterator::operator->() Ligne 457 C++
>
osg54-osgTextd.dll!osgText::Text::renderOnlyForegroundText(osg::State
& state={...}, const osg::Vec4f & colorMultiplier={...})
Ligne 1751
+ 0x8 octets C++
osg54-osgTextd.dll!osgText::Text::drawImplementation(osg::State
& state={...}, const osg::Vec4f & colorMultiplier={...}) Ligne
1368 C++
osg54-osgTextd.dll!osgText::Text::drawImplementation(osg::RenderInfo
& renderInfo={...}) Ligne 1252 C++
osg54-osgd.dll!osg::Drawable::draw(osg::RenderInfo &
renderInfo={...}) Ligne 898 + 0x13 octets C++
osg54-osgUtild.dll!osgUtil::RenderLeaf::render(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf *
previous=0x08835dc0) Ligne 60 + 0x19 octets C++
osg54-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 419 + 0x19 octets C++
osg54-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 384 + 0x17 octets C++
osg54-osgUtild.dll!osgUtil::RenderBin::drawImplementation(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 469 + 0x35 octets C++
osg54-osgUtild.dll!osgUtil::RenderStage::drawImplementation(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 1253 C++
osg54-osgUtild.dll!osgUtil::RenderBin::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 384 + 0x17 octets C++
osg54-osgUtild.dll!osgUtil::RenderStage::drawInner(osg::RenderInfo
&
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0, bool
& doCopyTexture=false) Ligne 848 C++
osg54-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 1108 + 0x1b octets C++
osg54-osgUtild.dll!osgUtil::RenderStage::drawPostRenderStages(osg::RenderInfo
& renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 1266 + 0x2c octets C++
osg54-osgUtild.dll!osgUtil::RenderStage::draw(osg::RenderInfo &
renderInfo={...}, osgUtil::RenderLeaf * &
previous=0x08835dc0) Ligne 1173 + 0x17 octets C++
osg54-osgUtild.dll!osgUtil::SceneView::draw() Ligne 1504 +
0x37 octets C++
osg54-osgViewerd.dll!osgViewer::Renderer::draw() Ligne
423 +
0xf octets C++
osg54-osgViewerd.dll!osgViewer::Renderer::operator()(osg::GraphicsContext
* context=0x021387f0) Ligne 650 + 0xf octets C++
osg54-osgd.dll!osg::GraphicsContext::runOperations()
Ligne 688
+ 0x33 octets C++
osg54-osgd.dll!osg::RunOperations::operator()(osg::GraphicsContext
*
context=0x021387f0) Ligne 135 C++
osg54-osgd.dll!osg::GraphicsOperation::operator()(osg::Object *
object=0x021387f0) Ligne 50 + 0x19 octets C++
osg54-osgd.dll!osg::OperationThread::run() Ligne 413 + 0x26
octets C++
osg54-osgd.dll!osg::GraphicsThread::run() Ligne 40 C++
ot11-OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void
* data=0x08681fc4) Ligne 113 + 0xf octets C++
msvcr80d.dll!_callthreadstartex() Ligne 348 + 0xf
octets C
msvcr80d.dll!_threadstartex(void * ptd=0x0704e670)
Ligne 331 C
kernel32.dll!7c80b683() [Les frames
ci-dessous sont peut-être incorrects et/ou
manquants, aucun symbole chargé pour kernel32.dll]
ntdll.dll!7c92b686()
Do you have any suggestion ? what can cause this problem ?
Thanks a lot.
Regards,
Vincent.
------------------------------------------------------------------------
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
<mailto:osg-users@lists.openscenegraph.org>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
--
This message is subject to the CSIR's copyright terms and
conditions, e-mail legal notice, and implemented Open Document
Format (ODF) standard. The full disclaimer details can be found at
http://www.csir.co.za/disclaimer.html.
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
osg-users@lists.openscenegraph.org
<mailto:osg-users@lists.openscenegraph.org>
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
------------------------------------------------------------------------
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org