我正在尝试学习OpenSceneGraph的工作原理,所以我按照一些教程进行操作。到目前为止,一切正常,但现在,我遇到了文本问题。
我没有出现构建错误,但是当我启动该程序时,我收到了以下消息:
(1)“在 myprograme 中的0x73F12252(msvcr100.dll)处理异常:0xC0000005: 读取0x00AEE000“
时违反了访问权限(2)“在 myprograme 中的0x1000AF10(osg80-osgText.dll)处理异常:0xC0000005: 读取0x00194000“
时违反了访问权限
我已经检查了dll,试图将它们放在启动文件夹中,但它什么都没改变。
以下是它发生的代码:
osg::Vec3 pyramidTwoPosition(15, 0, 0);
pyramidTwoXForm->setPosition(pyramidTwoPosition);
testText->setCharacterSize(25);
testText->setFont("../arial.ttf"); //Error (1)
testText->setText("Test text"); //Error (2)
testText->setAxisAlignment(osgText::Text::SCREEN);
testText->setPosition(osg::Vec3(0, 0, 0));
testText->setColor(osg::Vec4(1, 0, 0, 1.0f));
osg::Geode* textGeode = new osg::Geode();
textGeode->addDrawable(testText);
pyramidTwoXForm->addChild(textGeode);
答案 0 :(得分:1)
一些提示:
从头到尾:
osg::Geode* textGeode = new osg::Geode();
可能会出现内存泄漏。请改用osg::ref_ptr<osg::Geode> textGeode = new osg::Geode();
。大多数OSG对象都是osg::Referenced
(OSG智能指针),因此无法将刚创建的对象添加到智能指针可能会导致内存泄漏。