查看: 3915|回复: 15

请教一下osg在ubuntu下该如何配置

[复制链接]

该用户从未签到

发表于 2010-4-21 21:38:00 | 显示全部楼层 |阅读模式
在网上想找这方面的资料。。怎么也找不到。。都是在windows下的。。
一开始直接用gcc编译。。后来用了anjuta,都有问题。。郁闷了。。。
编译的时候总是说找不到文件(就是添加的那些头文件)
也不知到该怎么设置。。
可能是环境变量的问题把。。设了几个,不过也没效果。。不知道该如何设置。。

刚开始接触osg,希望各位朋友能给点帮助谢谢了。。都整了好几天了。。一点进展都没有。。快崩溃了。。。

该用户从未签到

 楼主| 发表于 2010-4-21 21:41:38 | 显示全部楼层
补充一下。。osg的版本是2。8。1

该用户从未签到

发表于 2010-4-22 08:41:45 | 显示全部楼层
流程不变:下载并安装cmake for linux的版本,然后直接在当前OSG根目录下:# cmake -DBUILD_TYPE=Release;如果想要out-of-tree编译的话,在另一个目录下使用相对路径来完成,例如:cmake -DBUILD_TYPE=Release ../OpenSceneGraph

至于您所说的编译错误,请列出以供大家判断。OSG在ubuntu下的安装要简单很多,毕竟身为team leader的Robert Osfield用的就是ubuntu

该用户从未签到

 楼主| 发表于 2010-4-22 13:22:01 | 显示全部楼层
不好意思,我表述不清楚。我安装成功了。。。没有问题
不过在运行那些例子时,通不过。。。
 
代码:
  #include <osgViewer/Viewer>
   #include <osgDB/ReadFile>


   int main( int, char ** )
   {
      osgViewer::Viewer viewer;
    viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
    return viewer.run();
   }

错误:
h.cpp:1:28: error: osgViewer/Viewer: 没有那个文件或目录
h.cpp:2:26: error: osgDB/ReadFile: 没有那个文件或目录
h.cpp: In function ‘int main(int, char**)’:
h.cpp:7: error: ‘osgViewer’ has not been declared
h.cpp:7: error: expected ‘;’ before ‘viewer’
h.cpp:8: error: ‘viewer’ was not declared in this scope
h.cpp:8: error: ‘osgDB’ has not been declared

该用户从未签到

 楼主| 发表于 2010-4-22 13:35:09 | 显示全部楼层
对了,osgversion正常
添加export OSG_FILE_PATH=/usr/share/openscenegraph/data之后osgviewer cow.osg正常。。
不知道是不是什么环境变量没有添加。。。。
还有PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/share/RealPlayer:/usr/share/openscenegraph/bin:/usr/share/openscenegraph/lib/osgPlugins-2.8.1

该用户从未签到

发表于 2010-4-22 13:47:39 | 显示全部楼层
这个错误很显然是由于您的头文件路径设置不成却造成的,请检查您的makefile

该用户从未签到

 楼主| 发表于 2010-4-22 15:17:22 | 显示全部楼层
我是直接用apt-get install openscenegraph 安装的。。。
是不是要重新下源代码编译安装啊。。。
不好意思,刚接触这些,很多东西不明白。。。。

该用户从未签到

发表于 2010-4-22 16:14:55 | 显示全部楼层
osgversion正常的话,您的OSG应该已经可用了
既然您是在自己编写程序,那么您必然有自己的makefile?或者您是用什么IDE工具来进行编程的?

该用户从未签到

 楼主| 发表于 2010-4-22 16:37:40 | 显示全部楼层
本帖最后由 bingxinguoke 于 2010-4-22 16:45 编辑

用的这个anjuta。。。不知道可不可以。。。
另外直接用g++可以么。。
g++ h.cpp -L/usr/share/openscenegraph/lib -I/usr/share/openscenegraph/include
报了好多类似这样的错:
/usr/share/openscenegraph/include/osg/Camera:87: error: ‘GLbitfield’ has not been declared
/usr/share/openscenegraph/include/osg/Camera:90: error: ‘GLbitfield’ does not name a type
/usr/share/openscenegraph/include/osg/Camera:297: error: ‘GLenum’ has not been declared
/usr/share/openscenegraph/include/osg/Camera:300: error: ‘GLenum’ does not name a type
/usr/share/openscenegraph/include/osg/Camera:304: error: ‘GLenum’ has not been declared
。。。。。。
/usr/share/openscenegraph/include/osg/ref_ptr: In member function ‘void osg::ref_ptr<T>::assign(const osg::ref_ptr<Other>&) [with Other = int, T = int]’:
/usr/share/openscenegraph/include/osg/ref_ptr:37:   instantiated from ‘osg::ref_ptr<T>& osg::ref_ptr<T>:perator=(const osg::ref_ptr<T>&) [with T = int]’
/usr/share/openscenegraph/include/osg/Geometry:115:   instantiated from here
/usr/share/openscenegraph/include/osg/ref_ptr:106: error: request for member ‘ref’ in ‘*((osg::ref_ptr<int>*)this)->osg::ref_ptr<int>::_ptr’, which is of non-class type ‘int’
/usr/share/openscenegraph/include/osg/ref_ptr:110: error: request for member ‘unref’ in ‘* tmp_ptr’, which is of non-class type ‘int’

该用户从未签到

发表于 2010-4-22 16:56:27 | 显示全部楼层
您在ubuntu下安装了Mesa 3D吗?以及是否设置了相应的头文件和依赖库?Mesa 3D是OpenGL在Linux下的实现。

该用户从未签到

 楼主| 发表于 2010-4-25 09:03:14 | 显示全部楼层
本帖最后由 bingxinguoke 于 2010-4-25 09:04 编辑

10# array
Mesa 3D应该是有是有装的,因为我运行osgviewer /usr/share/openscenegraph/data/cow.osg是可以成功的。
昨天我换了一个IDE,用的是code::blocks,添加好库文件什么的,build没有问题,run的时候会出错:
./osgtestone: error while loading shared libraries: libOpenThreadsd.so.11: cannot open shared object file: No such file or directory
这是怎么回事啊。。。。。

该用户从未签到

发表于 2010-4-26 08:29:07 | 显示全部楼层
error while loading shared libraries: libOpenThreadsd.so.11: cannot open shared object file: No such file or directory
没有找到OSG的库文件,这依然是您的makefile存在问题

该用户从未签到

 楼主| 发表于 2010-4-27 16:17:21 | 显示全部楼层
本帖最后由 bingxinguoke 于 2010-4-27 16:18 编辑

这个问题搞定了。。。不过现在又有新问题了,run的时候的背景,那头牛没有出现:
  1. #include <osgViewer/Viewer>
  2. #include <osgDB/ReadFile>


  3. int main(int argc, char** argv )
  4. {
  5. osgViewer::Viewer viewer;
  6. viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
  7. return viewer.run();
  8. }
复制代码
我把那个路径改为:
  1. viewer.setSceneData(osgDB::readNodeFile("/usr/share/openscenegraph/data/cow.osg"));
复制代码
就可以看到了,我用的ide是code::block,不知道该如何设置。。。


另外我买了两本书:

对于初学者,该怎样开始学习。。。。

该用户从未签到

 楼主| 发表于 2010-4-27 16:22:11 | 显示全部楼层
不知道为什么,那两本书的图片显示不出来。。。。
1。OpenSceneGraph三维渲染引擎编程指南
2。OpenSceneGraph三维渲染引擎设计与实践
这两本书的区别以及侧重点是什么。该怎样组织学习这两本书。。。。

该用户从未签到

发表于 2010-4-27 16:36:46 | 显示全部楼层
run的时候的背景,那头牛没有出现
设置环境变量OSG_FILE_PATH,这样系统会自动搜索这个环境变量中的目录来查找文件。否则您需要正确指定绝对或相对路径

该用户从未签到

发表于 2010-4-27 16:46:12 | 显示全部楼层
1。OpenSceneGraph三维渲染引擎编程指南

我没有认真读过FlySky的这本书,不过我想很适合作为系统学习的读物和开发的手边书

2。OpenSceneGraph三维渲染引擎设计与实践

这本书是这样定位的:适合对OSG本身已经具备一定了解,希望深入学习它的内部原理和实现的人阅读

对于初学者,一个更好的学习资料是Paul Martz的《快速入门指导》,虽然内容有些老了,但是基本思想依然精辟
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表