当前位置:首页 » 编程软件 » linux编译osg

linux编译osg

发布时间: 2022-05-29 04:21:00

㈠ OSG是什么的缩写

OpenSceneGraph
OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OpenGL技术为图形元素(多边形、线、点……)和状态(光照、材质、阴影……)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。

可以运行OSG的平台需要具备OpenGL的支持能力,以及C++的编译环境,支持OSG的系统包括Solaris,IRIX,Windows,Mac OSX,HP-UX,Sony Platystation等等,不过XBox除外。

和OpenGL类似,OSG的核心并没有提供窗口系统的功能。因此用户可以自由选择所需的图形开发接口,如GLUT,X11/Motif,Win32,MacOS X,Qt,wxWindows,Fox等。

OSG采用以下思想和工具进行构建:
· ANSI标准C++;
· C++标准模板库(STL);
· 设计模式(Design patterns)。
这些工具使得OSG的开发者可以在自己喜好的平台上进行开发,并且依据用户所要求的平台进行配置。

OSG是一个开源系统,主要包括场景图形核心,Procer库,OpenThread库以及用户插件四个部分。自Robert Osfield主持这个项目以来,OSG就作为一个开放源代码的图形开发工程开始在全球运作了。

目前,部分高性能的软件已经使用了OSG来渲染复杂的2D和3D场景。虽然大部分基于OSG的软件更适用于可视化设计和工业仿真,但是在使用3D图形的每个领域,都已经出现了OSG的身影。这其中包括了地理信息系统(GIS),计算机辅助设计(CAD),建模和数字内容创作(DCC),数据库开发,虚拟现实,动画,游戏和娱乐业。

OpenSceneGraph的开发及免费下载网址为:http://www.openscenegraph.org/

linux下编译osg示例程序出错,请精通osg的高手帮忙。

试试降级gcc

㈢ 求助 osg编程贴图显示不出来

检查一下图片的路径,看看osgDB::readImageFile返回的指针是不是空的。既然能在Linux下运行,能猜测的无非就是路径问题了。

㈣ 怎么在ubuntu上安装boost1.58

安装好ubuntu14.04之后,下载boost、qt、osg的库,进行编译

1.boost

参考http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html

boost提取出来以后,先./configure,生成b2

这里b2好像就是对应1.40以前的bjam,都是boost自己的编译程序。

再执行./b2 link=static runtime-link=static variant=debug,release
layout=versioned stage --stagedir="/home/username/boost_1_58_0/bin/gcc"
threading=multi

这个命令是个大概的格式,具体可能有些拼写符号有误,主要就多说几点。一个是link和runtime-link,link是在编译期间,是选择
static还是shared,如果是static,那么boost库在编译完成后,会绑入输出的程序,如果是shared,那么需要放在代码目录下,供
引用。runtime-link则是在程序发布之后,如果启动运行,调用boost库的方式,如果选择shared,那么不但需要把编译输出的文件给客
户,还要给他一堆依赖的动态链接库。

variant是以什么方式输出,如果既想要debug 又想要release,那么就用逗号连接。

但是,如果同时输出debug,release,会产生命名冲突,必须指定layout=versioned,这样debug和release出来的库的名字才不会冲突。

stage编译的话,编译完成后,所有的库文件都会被输入指定的stagedir里面,而include文件本身就在boost_1_58_0下面
的boost文件夹中。不需要再执行make
install,install的作用会把所有生成的库拷入/usr/local/lib里面,/boost_1_58_0/boost也会拷入/usr
/local/include 里面,有点多余

但是stage方式编译的话,在每次生成依赖boost库的程序的时候,需要用-I在指定inlucde路径。可以通过在环境变量文件里面指定环境
变量,然后g++编译的时候,指定这个环境变量。关于环境变量参考了这篇:http://blog.csdn.net/tigerjibo
/article/details/8513365

比如我有一个调用boost库的代码文件hboost.c,在/home/username/.profile文件里面指定了
BOOST_ROOT,重启生效。编译的时候 执行 g++ -I$BOOST_ROOT hboost.c -o
hboost,就可以输出编译结果,再运行./hboost就可以看到程序运行的结果了。

2.qt

qt其实比较简单,直接进入解压到目录,./congfigure;make;make install三个步骤就可以了。不过由于我要用osg 利用qt的库编译osgQT所以这里有个坑。

首先,为什么选择QT4.8,这是因为它是QT5.0以下的最新版。为什么不用QT5呢,因为据osgChina里面的大牛说,好像QT5在osg
里面进行多线程方面有bug。具体参考这些帖子,http://bbs.osgchina.org/forum.php?mod=viewthread&
amp;tid=13908&highlight=qt5

http://bbs.osgchina.org/forum.php?mod=viewthread&tid=12703&highlight=qt5

其次,为了最后能生成osgQT,需要编译QT的GLWidget等相关类,所以需要在本机上安装opengl。开始的时候参考这篇文章
http://www.wikihow.com/Install-Mesa-(OpenGL)-on-Linux-Mint.但运行命令的时候总是告诉我
依赖有问题。于是看到有人说需要更新源(http://forum.ubuntu.org.cn/viewtopic.php?f=48&
t=468366),就又找到了这篇文章http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1
%A8#Trusty.2814.04.29.E7.89.88.E6.9C.AC。这下就全都妥了。

然后进入qt解压目录,做./configure -static -debug-and-release -no-sql-sqlite
-no-sql-sqlite2 -no-sql-sqlite_symbian
-opengl生成静态库。注意,那几个no-sql的选项,如果不带的话,会在下一步make的时候,报
qt_plugin_instance_qsqlite
unresolve之类的错误(http://www.qtcentre.org/threads/25304-making-qt-libs-as-
static-problem-under-Linux(ubuntu))。-opengl选项,会让configure自动去默认路径寻找opengl
相关的依赖,如果你的opengl安装的位置不对,他会要求你自己指定其他的位置。

3.osg

osg默认是用cmake来编译的,所以应该先用apt-get把cmake
cmake-gui搞下来。在编译的过程中发现,如果本机的依赖库有问题,有可能会导致编译或者链接失败。一个比较偷懒的办法提供给大家。首先,请先更新
你linux的源,之后apt-get build-dep
openscenegraph,这个命令在我这里下载了几十兆的依赖库。然后进入到osg的解压目录,然后把makefile.txt拖进gui,点击
configure,勾选group、advanced。如果要编译Debug那么先把cmake组里面的参数build
type(似乎是这个选项)写Debug,build组里面的compile
example勾选。然后再点击一次configure,再点generate。理论上依赖库应该是没问题的,因为我们apt-get了那么多依赖库对
吧。

然后终端里make,如果报错,如果报错是和某个依赖库有关的,那么就重新打开cmake-gui,把那个依赖库选项下的include、library全部删掉,再重新生成,然后再重新make。如此反复,最终一定会生成一份可用的osg。

当然也可以不下载依赖库,直接把QT和opengl在默认路径下准备好,如果这样的话其实更简单,直接终端里面运行./configure就行了,
自动会以release方式cmake出makefile,如果想要Debug方式,那就改一下configure文件。然后make,一般不会有问题。

make结束之后,所有生成的文件会位于解压文件夹里的bin、lib、inlcude里,把这些拷贝出来,放到另外一个文件夹比如build,然
后把下载到的data文件夹,里面包括那个牛、滑翔机和卡车等等经典的模型,也放到这个build里面,设置一下环境变量,osg应该就可以用了。

设置有关环境变量的问题,需要设置两个或者三个环境变量。如果在执行完make之后,再执行make
install,那么只需要设置OSG_FILE_PATH指定data文件夹的位置,并在PATH中指定bin文件夹的位置(这样可以运行
osgersion,osgiewer这些编译时附送的应用)。make
install会把include和lib文件夹拷入usr/local下的include、lib文件夹。但是如果没有执行make
install,那么需要设置第三个环境变量,那就是LD_LIBRARY_PATH,我的分发版是ubuntu
14.04,sudo gedit /etc/environment打开配置文件,添加export
LD_LIRARY_PATH=$LD_LIBRARYPATH:path to lib然后在终端里执行source
/etc/environment。这样做是因为在执行osgiewer的时候,如果要读入cow.osg文件,osg需要lib文件夹下的plugIn
文件夹里的插件来读取对应格式的文件。由于我我们没有执行make install所以就需要告诉osg,这个lib文件夹到底在哪里

http://stackoverflow.com/questions/14012021/osgviewer-cow-does-not-view-a-cow

http://forum.openscenegraph.org/viewtopic.php?t=11021

不得不说,我的osg生成的还是有问题,freetype总是用不了,字体显示上有些蛋疼。后来很仔细的把cmake里面的有关freetype的
地址都指定了,也输出osgdb_freetype.so了,但使用的时候还是出现undefined
symbol错误。先不打算搞了,起码现在主要功能都能用,字体的事先放一放。
http://blog.csdn.net/solofly752/article/details/45481137

㈤ linux osg插件怎么安装

一、Linux常用安装包及安装方法1、安装包一般有四类:
1)tar包,如software-1.2.3-1.tar.gz。他是使用UNIX系统的打包工具tar打包的。
2)rpm包,如software-1.2.3-1.i386.rpm。他是Redhat Linux提供的一种包封装格式。包的管理工具YUM
3)dpkg包,如software-1.2.3-1.deb。他是Den Linux提供的一种包封装格式。包的管理工具apt-get
4)bin包,如jdk-1_5_0_05-linux-i586.bin,有些Linux软件不公开源代码,只发布二进制可执行程序,这
类程序一般会以bin来标记。

2、tar一般安装方法
1)取得应用软件:通过下载、购买光盘的方法获得;
2)解压缩文件:一般tar包,都会再做一次压缩,如gzip、bz2等,所以你需要先解压。如果是最常见的gz格

式,则能执行:“tar -xvzf 软件包名”,就能一步完成解压和解包工作。如果不是,则先用解压软件,再执

行“tar -xvf 解压后的tar包”进行解包;
3)阅读附带的INSTALL文件、README文件;
4)执行“./configure”命令为编译做好准备;
5)执行“make”命令进行软件编译;
6)执行“make install”完成安装;
7)执行“make clean”删除安装时产生的临时文件。
一般来说,Linux的应用软件的可执行文件会存放在/usr/local/bin目录下!不过这并不是“放四海皆准”的真理
,最可靠的还是看这个软件的INSTALL和README文件,一般都会有说明。

3、rpm包一般安装方法
只需简单的一句话,就能说完。执行:
rpm -ivh rpm软件包名
rpm参数 参 数 说 明
-i 安装软件
-t 测试安装,不是真的安装
-p 显示安装进度
-f 忽略所有错误
-U 升级安装
-v 检测套件是否正确安装

4、deb包一般安装方法
dpkg -i deb软件包名
如:dpkg -i software-1.2.3-1.deb

5、bin包一般安装方法
1)、打开一个SHELL,即终端
2)、用CD 命令进入源代码压缩包所在的目录
3)、给文件加上可执行属性:chmod +x ******.bin(中间是字母x,小写)
4)、执行命令:./******.bin(realplayer for linux就是这样的安装包),执行安装过程中可以指定安装目录,类似于Windows下安装。

二、如何查找光盘中的rpm包
使用find命令查找光盘中的内容即可。比如要查找mysql相关的rpm包。可以执行如下命令:
find /media -name mysql*.rpm

说明:一般将光盘插入光驱,Linux系统会自动挂载,如上图,我的机器挂载点是/media目录。找到你需要的包名,直接安装即可。

㈥ 小白请教osg(OpenSceneGraph)如何安装

一下载资料:

1、下载源码
在http://www.openscenegraph.org/projects/osg/wiki/Downloads下载稳定版本的源代码或预编译包。

source code为源代码,可以用CMAKE工具生成.sln的解决方案;
binaries为预编译包,预编译包不是openscenegraph官方直接维护,而是有其他爱好者上传,可能会有隐患,最好是从源代码进行编译。
版本说明:<主版本号>.<副版本号>.<修订号>
主版本号高的,功能丰富;副版本号为偶数的为正式版本,比较稳定;副版本号为奇数的为开发者版本,有新特性和功能,但会存在未解决的兼容性和效率问题;开发者版本和正式版本是同步发行的。

下载文件为:OpenSceneGraph-2.8.0.zip

2、下载Cmake工具:
在http://www.cmake.org/cmake/resources/software.html中下载CMake工具cmake-2.8.2-win32-x86.exe。

3、下载SVN软件(用于下载源码或第三方库,有的版本不需要此软件,可直接下,根据情况定):

在http://tortoisesvn.tigris.org/下载TortoiseSVN。

4、下载第三方库Dependencies,http://www.openscenegraph.org/projects/osg/wiki/Downloads/Dependencies,
“VisualStudio 8 (2005) SP1 - svn access directory ”

5、下载示例:
在http://www.openscenegraph.org/projects/osg/wiki/Downloads/SampleDatasets中下载示例数据文件OpenSceneGraph-Data-2.8.0.zip 。

二、安装
1、安装cmake工具
2、在某盘符下建立osg文件夹,在该文件夹中放置源码文件、第三方文件和示例文件。
3、运行cmake,
第一行(where is the source code)输入osg文件夹中的源码文件;
第二行(where to build the binaries)输入一个新文件夹名及地址,如osg/build_osg;
点configure,选择所用的编译器版本,即c++版本;
点grouped,选择build项,选择build_osg_examples和build_osg_wrappers;
选择cmake项,设置cmake_install_prefix的位置(用于存放编译完的各种模块文件,如库文件、可执行文件和头文件)
点configure,点advanced,选上build_mfc_example
点configure,
点generate,完成。
此时在osg/build_osg文件中生成了对应编译版本的.sln文件。
4、用c++编译器打开该.sln文件,在解决方案管理器窗口中的all_build上右击,选“生成”,将在osg/build_osg中生成几个G的文件。
在install上右击,选“生成”,将在第三步中cmake_install_prefix设置的文件夹中生成编译完的各种模块文件(如库文件、可执行文件和头文件)。

三、设置环境变量
我的电脑-属性-高级-环境变量
系统变量
OPENSCENEGRAPH_VERSION=2.8.0
OSGDIR=D:\Program Files\OpenSceneGraph
PATH新增:%OSGDIR%\bin;
%OSGDIR%\bin\osgPlugins-%OPENSCENEGRAPH_VERSION%
OSG_FILE_PATH=%OSGDIR%\data
OSG_NOTIFY_LEVEL=INFO

四、简单测试
在控制台下输入osgviewerd cow.osg

五、建立工程环境
1、使VS支持无扩展名头文件的高亮显示。
进入visual studio,选择Tools-Options,选text editor-file extension,在下面的map extensionless files to选项选择microsoft visual c++。
2、构建基于OSG开发的工程。
1)建一个工程
2)在project-properties中选择configuration properties-c/c++,在additional include directories中输入“$(OSGDIR)\include”。
3)选择configuration properties-linker,在additional library directories中输入“$(OSGDIR)\lib”。
4)选择configuration properties-linker-input,打开additional dependencies窗口,准备配置输入的依赖库文件名称。如OpenThreadsd.lib;osgd.lib;osgDBd.lib;osgUtild.lib;osgGAd.lib;osgTextd.lib;osgViewerd.lib
注意:Debug版本的工程和Release版本的工程所依赖的OSG库文件类型相同,但名称有区别.Debug版本的文件名末尾有"d"标识。根据用户需要的不同,还可以添加其他库依赖文件,这些文件在osg的lib文件夹中。

OK,现在可以编代码,编译、调试,输出效果了,体会OSG渲染引擎的强大吧

㈦ OSG+qt+linux模型不显示,只有蓝屏

电脑出现蓝屏,一般都是由系统、软件、内存等原因引起的。原因由下:
1.电脑不心装上了恶意软件,或上网时产生了恶意程序,建议用腾讯电脑管家杀毒软件,清理垃圾,查杀恶意软件,完成后重启电脑,就可能解决。
2.点击开始菜单---运行----输入cmd 回车,在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 然后 回车。然后让他运行完,应该就可能解决。
3.电脑机箱里面内存条进灰尘,拆开机箱,拆下内存条,用橡皮擦内存条金手指,换个插槽重新装回去,就可以了。
4.开机不停按F8,进入高级,选择最后一次正确配置,确定。
5.使用腾讯电脑管家,工具箱--硬件检测--查看配置,根据配置更新驱动!!电脑诊所--搜索系统蓝屏--查看修复办法。

㈧ 求助一下,关于OSG编译的问题,cmake下就是没有ACTUAL_3DPARTY_DIR这一项,编译卡在这进行不下去了!!!

ACTUAL_3DPARTY_DIR,这个的意思是第三方文件所在目录,你把3rdParty下载下来,然后放在你电脑的任意盘位,比如C:/Programs/OSG/3rdParty。在cmake下ACTUAL_3DPARTY_DIR,把那个路径加上来就行了。我验证了下,是会有ACTUAL_3DPARTY_DIR这一项的,如果没有,是不是你没有下载3rdParty第三方文件啊。或者是你加入的CMakeLists.txt这一项应该是OpenSceneGraph-3.0.0中的CMakeLists.txt,而不是OpenSceneGraph-3.0.0\applications中的CMakeLists.txt,你再试试,如果还不行,再追问,希望最终能帮你解决问题。

㈨ 如何用编译好的osgearth包构建解决方案

我的也是,同样的软件,别人正常使用,我的就报错,但是现在我把编程的源码写上后先编译stdafx.cpp后在编译就没问题了。 c++6.0与win8.1是不兼容的,你可以下载vs2010

㈩ 关于opengl和 osg的问题

简介
OpenSceneGraph是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,游戏,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个在OpenGL之上的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。

特性

有了OpenSceneGraph,我们的目标是让所有的人在场景图技术中受益,无论是商业还是非商业的用户。它完全是由标准C++程序和OpenGL写的,充分利用STL和设计模式,发挥开源开发模型的优势来提供一个免费的开发库,并且重点集中在用户的需求上。随着使用一个全特性的场景图OpenSceneGraph的关键优势在于它的性能、可扩展性、可移植性和快速开发(proctivity),更具体的来说:

性能
支持视图投影剔除(view frustum culling),隐藏面剔除(occlusion culling),小特性剔除(small feature culling),细节层次节点(LOD),状态排序(state sorting),顶点数组,顶点缓冲对象(vertex buffer objects),OpenGL着色语言和显示列表(display lists),以上所列都是场景图内核的一部分。它们共同使OpenSceneGraph成为一个高性能的图形库变为可能,OpenSceneGraph也支持绘制进程(drawing process)的定制,比如场景图的连续细节层次(CLOD)的网格(参见虚拟地形项目和Delta3D)。
快速开发
场景图的内核封装了包括最新扩展的大部分OpenGL功能,提供诸如剔除和排序的渲染优化功能,同样提供能快速开发高性能图形应用程序的一整套补充库。应用程序开发者可以更关心实质性内容和如何操控这些它们,而不再是底层的代码

??? 通过学习已有的场景图,比如:Performer和Open Inventor,把它们同像设计模式这样现代软件工程理念联合起来,加上早期开发周期中的大量反馈信息,设计一个清晰的可扩展的库已经成为可能。用户可以很简单的适应OpenSceneGraph并且把它集成到自己的应用程序中
数据装载
为了读入和写出数据库,有一个数据库的支持库(osgDB)增加了通过后缀名动态插件机制,从而支持大量数据格式,目前的发布版本有55种单独的插件支持3D数据和图像格式的装载。支持的3D数据格式包括COLLADA, LightWave (.lwo),Alias Wavefront (.obj),OpenFlight (.flt), 多线程页面调度支持的TerraPage (.txp),Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb),AutoCAd (.dxf), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) ,AC3D (.ac) 和自带的.osg ASCII 文本格式。支持的图像格式包括.rgb, .gif,.jpg, .png, .tiff, .pic, .bmp, .dds (包含压缩的一系列Mip贴图影像),.tga and quicktime (在OSX环境下),全范围的高质量、抗锯齿字体也能通过freetype插件支持,基于字体的图像也可以通过.txf插件支持。
用户也可以通过与我们同行的一个项目(VirtualPlanetBuilder)生成大规模地形空间数据(multi GB),使用OpenSceneGraph的自带数据分页调度支持来查看这些数据。
节点工具箱
这个场景图同样有一套节点工具集,它们是可以在你的应用程序中编译或者在运行时装载的独立库,它们增加支持粒子系统(osgParticle),高质量抗锯齿文本(osgText),特效框架结构(osgFX),阴影框架结构(osgShadow),交互控制(osgManipulator),与虚拟仿真相关的效果(osgSim)。
可移植性
场景图的内核已经被设计成尽量少的依赖具体的平台,很少的部分超出了标准C++程序和OpenGL。这就使得这个场景图可以快速移植到大部分系统中—最开始在IRIX开发,然后移植到Linux,接着到Windows,再后来就是FreeBSD, Mac OSX,Solaris,HP-UX, AIX 甚至是PlayStation2!
完全独立与窗口操作系统的场景图内核库使得用户在它上面可以增加他们自己的指定窗口库和应用程序,在发布版本中osgViewer库提供自带窗口支持,可支持Windows (Win32), Unices (X11) 和 OSX (Carbon)。osgViewer库也可以轻松的和你的窗口开发包集成起来,作为OpenSceneGraph-2.0发布版本的一部分,有例子演示了如何在Qt, GLUT, FLTK, SDL, WxWidget, Cocoa and MFC中的使用。场景图内核的可扩展性使得它不仅仅可运行在便携式设备,甚至高端的多核、多GPU的系统和集群上。这可能是因为场景图内核为OpenGL的显示列表和纹理对象支持多重图形渲染环境(multiple graphics contexts),剔除和绘制的遍历过程被设计成隐藏渲染数据为局部变量,这样可以以几乎只读的方式使用场景图内核。这样就允许多对剔除—绘制过程运行在多个CPU上,CUP也是绑定在多个图形子系统之上。对多图形设备渲染环境和多线程的支持可以在osgViewer中方便使用,发布版本中所有的例子都可以以多线程和多GPU的方式运行。作为社区项目,OpenSceneGraph支持多种语言,比如Java,Lua和Python。

热点内容
unix网络编程第2卷 发布:2025-07-04 18:33:41 浏览:779
编译历史 发布:2025-07-04 18:23:01 浏览:851
空调压缩机种类 发布:2025-07-04 18:13:58 浏览:242
中国有ip6服务器吗 发布:2025-07-04 17:58:56 浏览:725
第六章编译原理答案 发布:2025-07-04 17:37:55 浏览:40
php内存优化 发布:2025-07-04 17:25:54 浏览:664
威纶触摸屏如何设置时间限制密码 发布:2025-07-04 17:25:50 浏览:418
python列表的遍历 发布:2025-07-04 17:24:20 浏览:24
编译基本块 发布:2025-07-04 17:23:06 浏览:750
scl语言编程 发布:2025-07-04 17:23:05 浏览:993