osgdb_osg源码_osg开源协议

hacker|
108

文章目录:

有懂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渲染引擎的强大吧

5条大神的评论

  • avatar
    访客 2022-09-03 上午 03:38:27

     osg::ref_ptrosg::Material material= new osg::Material;    osg::ref_ptrosg::Texture2D texture= new osg::Texture2D;    osg::ref_ptros

  • avatar
    访客 2022-09-02 下午 10:21:21

    sg文件夹中的源码文件;第二行(where to build the binaries)输入一个新文件夹名及地址,如osg/build_osg;点configure,选择所用的编译器版本,即c++

  • avatar
    访客 2022-09-03 上午 03:51:58

    根据用户需要的不同,还可以添加其他库依赖文件,这些文件在osg的lib文件夹中。OK,现在可以编代码,编译、调试,输出效果了,体会OSG渲染引擎的强大吧

  • avatar
    访客 2022-09-02 下午 10:08:36

    rectory ”5、下载示例:在中下载示例数据文件OpenSceneGraph-Data-2.8.0.zip 。二、安装1、安装cmake工具2、在某盘符下建立osg文件夹,在该文件夹中放置源码文

  • avatar
    访客 2022-09-03 上午 05:28:34

    选上build_mfc_example点configure,点generate,完成。此时在osg/build_osg文件中生成了对应编译版本的.sln文件。4、用c++编译器打开该.s

发表评论