0
点赞
收藏
分享

微信扫一扫

Osg-Osg实现雾效果(Qt5.14.2+osgE3.6.5+win10)-No23-OsgFog

Soy丶sauce 2022-10-20 阅读 120

 

Osg-Osg实现雾效果(Qt5.14.2+osgE3.6.5+win10)-No23-OsgFog_#include

.pro

1 QT       += core gui widgets
2 TARGET = TestOsgQt
3 TEMPLATE = app
4 DEFINES += QT_DEPRECATED_WARNINGS
5 CONFIG += c++11
6
7 QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
8 QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
9
10 SOURCES += \
11 main.cpp
12
13 HEADERS +=
14
15 OsgDir = D:\\Gitee\\osg365R
16 CONFIG(release, debug|release) {
17 LIBS += -L$${OsgDir}/lib/ -losgDB -losgViewer -lOpenThreads -losgAnimation -losg \
18 -losgEarth -losgEarthAnnotation -losgEarthFeatures -losgEarthSymbology -losgEarthUtil \
19 -losgQOpenGL -losgUtil -losgText -losgTerrain -losgSim \
20 -losgShadow -losgParticle -losgManipulator -losgGA -losgFX \
21 -losgWidget
22 } else {
23 LIBS += -L$${OsgDir}/debug/lib/ -losgDBd -losgViewerd -lOpenThreadsd -losgAnimationd -losgd \
24 -losgEarthd -losgEarthAnnotationd -losgEarthFeaturesd -losgEarthSymbologyd -losgEarthUtild \
25 -losgQOpenGLd -losgUtild -losgTextd -losgTerraind -losgSimd \
26 -losgShadowd -losgParticled -losgManipulatord -losgGAd -losgFXd \
27 }
28
29
30 INCLUDEPATH += $${OsgDir}/include
31

View Code

main.cpp

1 #include <osgViewer/Viewer>
2 #include <osgDB/ReadFile>
3 #include <osg/Shape>
4 #include <osg/ShapeDrawable>
5 #include <osg/MatrixTransform>
6 #include <osg/Program>
7 #include <osgDB/ReadFile>
8 #include <osgDB/FileUtils>
9 #include <osgEarthUtil/Fog>
10 #include <osg/Fog>
11
12 int main()
13 {
14 // 加载牛
15 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
16 osg::ref_ptr<osg::Node> geode = osgDB::readNodeFile("D:/Gitee/OsgTestQt/src/No23/tree.ive");//CreateNode();
17 osg::ref_ptr<osg::Group> gp= new osg::Group;
18 gp->addChild(geode);
19
20 osg::ref_ptr<osg::Fog> fog = new osg::Fog;
21 fog->setDensity(0.01);
22 fog->setColor(osg::Vec4(1.0, 1.0, 1.0, 1.0));
23 fog->setMode(osg::Fog::LINEAR); //osg::Fog::EXP //osg::Fog::EXP2
24 fog->setStart(10);
25 fog->setEnd(50);
26 gp->getOrCreateStateSet()->setAttributeAndModes(fog.get(), osg::StateAttribute::ON);
27
28 viewer->setSceneData(gp);
29 viewer->setUpViewInWindow(35, 35, 500, 500);
30 return viewer->run();
31 // 以下代码也是雾,但是增加后,物体全变成白色了。
32 // osg::Fog* fog = new osg::Fog();
33 // fog->setMode(osg::Fog::LINEAR);
34 // fog->setStart(500.0f);
35 // fog->setEnd(2500.0f);
36 // fog->setDensity(10);
37 // fog->setColor(osg::Vec4(0.5f, 0.5f, 0.5f, 1.0f));
38 // fog->setUpdateCallback(new osgEarth::Util::FogCallback());
39 // m_MapNode->getOrCreateStateSet()->setAttributeAndModes(fog, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
40 // osgEarth::Util::FogEffect* fogEffect = new osgEarth::Util::FogEffect();
41 // fogEffect->attach(m_MapNode->getOrCreateStateSet());
42 //取消雾效
43 //fogEffect->detach(m_MapNode->getOrCreateStateSet());
44

View Code

 

 

 

搜索

复制

举报

相关推荐

0 条评论