文章目录:
有懂OSG的吗?帮忙看看……
你检查下以下三条:
1、使用#include osgDB/ReadFile了吗?
2、确定你的path环境变量里面包含C:\OSG\OpenSceneGraph\build\bin路径
3、工程属性的附加依赖项中有osgDBd.lib
尝试一下。
initqtwindowingsystem;中不能使用osgtext吗
注意:
1.编译osg源码时,勾选osgQT 相关模块,这是对QT的支持
2.在QtPro文件中添加对应的库和目录
例如:
win32:INCLUDEPATH += C:/OpenSceneGraph/include \
win32:DEPENDPATH += C:/OpenSceneGraph/include
unix:!macx:INCLUDEPATH += .
win32:CONFIG(release, debug|release): LIBS += \
-LC:/OpenSceneGraph/lib/ -lOpenThreads \
-LC:/OpenSceneGraph/lib/ -losg \
-LC:/OpenSceneGraph/lib/ -losgAnimation \
-LC:/OpenSceneGraph/lib/ -losgDB \
-LC:/OpenSceneGraph/lib/ -losgFX \
-LC:/OpenSceneGraph/lib/ -losgGA \
-LC:/OpenSceneGraph/lib/ -losgManipulator \
-LC:/OpenSceneGraph/lib/ -losgParticle \
-LC:/OpenSceneGraph/lib/ -losgPresentation \
-LC:/OpenSceneGraph/lib/ -losgQt \
3. 编写CPP文件。
#include QApplication
#include osgViewer/Viewer
#include osgGA/TrackballManipulator
#include osgQt/GraphicsWindowQt
#include osg/ShapeDrawable
#include osg/MatrixTransform
#include osgManipulator/TabBoxDragger
#include osgGA/StateSetManipulator
#include osgViewer/ViewerEventHandlers
#include osgDB/ReadFile
#include osg/Material
#include osg/Texture2D
#include osg/Vec3
#include osg/Vec4
#include osg/ShapeDrawable
osg::ref_ptrosg::Geode CreateBox() {
osg::ref_ptrosg::Geode geode= new osg::Geode;
osg::ref_ptrosg::TessellationHints hints= new osg::TessellationHints;
osg::ref_ptrosg::ShapeDrawable shape= new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(5.0,5.0,5.0),10.0));
osg::ref_ptrosg::Material material= new osg::Material;
osg::ref_ptrosg::Texture2D texture= new osg::Texture2D;
osg::ref_ptrosg::Image image= new osg::Image;
hints-setDetailRatio(0.5);
//设置颜色
shape-setColor(osg::Vec4(0.1,0.5,0.5,0.5));
//设置材质
material-setAmbient(osg::Material::FRONT_AND_BACK,osg::Vec4(0.5,0.5,0.5,0.5));
material-setDiffuse(osg::Material::FRONT_AND_BACK,osg::Vec4(0.5,0.5,0.5,0.5));
material-setSpecular(osg::Material::FRONT_AND_BACK,osg::Vec4(0.5,0.5,0.5,0.5));
material-setShininess(osg::Material::FRONT_AND_BACK,0.6);
shape-getOrCreateStateSet()-setAttributeAndModes(material.get(),osg::StateAttribute::ON);
//设置纹理
image= osgDB::readImageFile("Images/land_shallow_topo_2048.jpg");
if(image-valid())
texture-setImage(image);
shape-getOrCreateStateSet()-setTextureAttributeAndModes(0,texture.get(),osg::StateAttribute::ON);
geode-addDrawable(shape);
return geode;
}
int main( int argc, char** argv )
{
QApplication app(argc, argv);
osgQt::initQtWindowingSystem();
osg::Group* sceneroot = new osg::Group;
sceneroot-addChild(CreateBox());
osg::ref_ptrosgViewer::Viewer viewer = new osgViewer::Viewer;
viewer-addEventHandler(new osgViewer::StatsHandler);
viewer-setSceneData( sceneroot );
viewer-setCameraManipulator( new osgGA::TrackballManipulator );
osgQt::setViewer( viewer.get() );
osgQt::GLWidget* glw = new osgQt::GLWidget;
osgQt::GraphicsWindowQt* graphicswin = new osgQt::GraphicsWindowQt(glw);
viewer-getCamera()-setViewport( new osg::Viewport(0, 0, glw-width(), glw-height() ) );
viewer-getCamera()-setGraphicsContext( graphicswin );
glw-show();
return app.exec();
}
4.效果图如下:
小白请教osg(OpenSceneGraph)如何安装
一下载资料:
1、下载源码:
在下载稳定版本的源代码或预编译包。
source code为源代码,可以用CMAKE工具生成.sln的解决方案;
binaries为预编译包,预编译包不是openscenegraph官方直接维护,而是有其他爱好者上传,可能会有隐患,最好是从源代码进行编译。
版本说明:主版本号.副版本号.修订号
主版本号高的,功能丰富;副版本号为偶数的为正式版本,比较稳定;副版本号为奇数的为开发者版本,有新特性和功能,但会存在未解决的兼容性和效率问题;开发者版本和正式版本是同步发行的。
下载文件为:OpenSceneGraph-2.8.0.zip
2、下载Cmake工具:
在中下载CMake工具cmake-2.8.2-win32-x86.exe。
3、下载SVN软件(用于下载源码或第三方库,有的版本不需要此软件,可直接下,根据情况定):
在下载TortoiseSVN。
4、下载第三方库Dependencies,,
“VisualStudio 8 (2005) SP1 - svn access directory ”
5、下载示例:
在中下载示例数据文件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::ref_ptrosg::Material material= new osg::Material; osg::ref_ptrosg::Texture2D texture= new osg::Texture2D; osg::ref_ptros
sg文件夹中的源码文件;第二行(where to build the binaries)输入一个新文件夹名及地址,如osg/build_osg;点configure,选择所用的编译器版本,即c++
根据用户需要的不同,还可以添加其他库依赖文件,这些文件在osg的lib文件夹中。OK,现在可以编代码,编译、调试,输出效果了,体会OSG渲染引擎的强大吧
rectory ”5、下载示例:在中下载示例数据文件OpenSceneGraph-Data-2.8.0.zip 。二、安装1、安装cmake工具2、在某盘符下建立osg文件夹,在该文件夹中放置源码文
选上build_mfc_example点configure,点generate,完成。此时在osg/build_osg文件中生成了对应编译版本的.sln文件。4、用c++编译器打开该.s