OpenSceneGraph文本显示

时间:2014-01-03 21:13:15

标签: c++ opengl openscenegraph

我正在尝试学习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);

1 个答案:

答案 0 :(得分:1)

一些提示:

  • 尝试将您的程序与您的代码段放在一起;你能做的最好的事情是有一个完整的运行程序,它有你试图解决的错误。这样,我们就能够执行和测试它,并且更容易帮助您。
  • 你在调试中尝试这个吗?如果是这样,没有堆栈跟踪?
  • 您使用的是哪个版本的Visual Studio,以及使用哪个版本的Visual Studio来制作DLL?

从头到尾:

  • 您似乎使用VS2010编译的应用程序,其中OSG DLL是针对VS2005编译的。您的DLL和应用程序应使用相同的编译器进行编译。
  • 您的行osg::Geode* textGeode = new osg::Geode();可能会出现内存泄漏。请改用osg::ref_ptr<osg::Geode> textGeode = new osg::Geode();。大多数OSG对象都是osg::Referenced(OSG智能指针),因此无法将刚创建的对象添加到智能指针可能会导致内存泄漏。