OSGの背景画像の設定

 

#ifdefの_WIN32 
の#include <はWindows.h>
 #endifの // _WIN32 
の#include <iostreamの> 

の#include <osgViewer /ビューア> 
の#include <osgViewer / ViewerEventHandlers>  
の#include <osgViewer / CompositeViewer>  

の#include <osgDB / ReadFile関数> 

の#include <OSG /のGeode> 
の#include <OSG /ノード> 
の#include <OSG /幾何学> 
の#include <OSG / GraphicsContext> 
の#include <OSG / ShapeDrawable> 
の#include <OSG /材料> 
の#include <OSG /画像> 
書式#include < OSG /にTexture2D>
#含める<OSG / TexEnv> 
の#include <OSG / TexGen> 
の#include <OSG / NodeVisitor> 
の#include <OSG / MatrixTransform> 
の#include <OSG / PositionAttitudeTransform> 
の#include <OSG / AnimationPath> 
の#include <OSG / Matrixd> 
する#include < OSG / PagedLOD> 
の#include <OSG /カメラ> 
書式#include <osgText /テキスト> 

の#include <osgGA / TrackballManipulator> 
の#include <osgGA / GUIEventHandler> 
の#include <osgGA / CameraManipulator> 
の#include <osgGA / StandardManipulator> 
の#include <osgGA / OrbitManipulator>
#含める<osgGA / TrackballManipulator> 

の#include <osgUtil / IntersectionVisitor> 
の#include <osgUtil / LineSegmentIntersector> 

OSG ::カメラ * createBackground(STD :: 文字列strImg)
{ 
    OSG :: ref_ptr <OSG ::のGeode> geode1 = 新しいOSG ::のGeode ; 
    OSG :: ref_ptr <OSG ::ジオメトリ> geometry1は= 新しいOSG ::ジオメトリ。
    OSG :: ref_ptr <OSG ::カメラ>カメラ1 = 新しいOSG ::カメラ。

    CAMERA1 - > setAllowEventFocus(); 
    CAMERA1 - > setProjectionMatrixAsOrtho2D(09600600 ); 
    CAMERA1 - > SETVIEWPORT(00960600 )。

    CAMERA1 - > setReferenceFrame(OSG ::変換:: ABSOLUTE_RF)。
    CAMERA1 - > setRenderOrder(OSG ::カメラ:: PRE_RENDER)。
    CAMERA1 - > setClearMask(GL_DEPTH_BUFFER_BIT |   GL_COLOR_BUFFER_BIT)。
    // camera1-> setClearColor(OSG :: Vec4()); 
    camera1-> setViewMatrix(OSG ::マトリックス::アイデンティティ()); 

    // 压入顶点 
    OSG :: ref_ptr <OSG :: Vec3Array>頂点= 新しいOSG :: Vec3Array。
    頂点- >一back(OSG :: Vec3(0.00.00.0 ))。
    頂点 - >一back(OSG :: Vec3(960.00.00.0 ))。
    頂点 - >一back(OSG :: Vec3(960.0600.00.0 ))。
    頂点 - >一back(OSG :: Vec3(0.0600.00.0 ))。
    geometry1は - > setVertexArray(頂点)。

    // 压入法线 
    OSG :: ref_ptr <OSG :: Vec3Array> NORML = 新しいOSG :: Vec3Array。
    NORML- >一back(OSG :: Vec3(0.00.01.0 ))。
    geometry1は - > setNormalArray(NORML)。
    geometry1は - > setNormalBinding(OSG ::幾何学:: BIND_OVERALL)。

    // 纹理坐标 
    OSG :: ref_ptr <OSG :: Vec2Array> COORD = 新しいOSG :: Vec2Array。
    COORD - >一back(OSG :: VEC2(0.00.0 ))。
    COORD - >一back(OSG :: VEC2(1.00.0 ))。
    COORD - >一back(OSG :: VEC2(1.01.0 )); 
    COORD - >一back(OSG :: VEC2(0.01.0 ))。
    geometry1は - > setTexCoordArray(0 、COORD)。
    geometry1は - > addPrimitiveSet(新しい OSG :: DrawArrays(OSG :: PrimitiveSet :: QUADS、04 ))。

    OSG :: ref_ptr <OSG ::画像> IMG1 = osgDB :: readImageFile(strImg)。
    もし(!img1.valid())
    { 
        のstd :: coutの << "" << はstd ::てendl; 
    } 

    OSG :: ref_ptr <OSG ::にTexture2D>にTexture2D = 新しいOSG ::にTexture2D。
    Texture2D - > setImage(0 、IMG1)。
    geometry1は - > getOrCreateStateSet() - > setTextureAttributeAndModes(0 、にTexture2D、OSG ::がstateAttribute :: ON)。


    CAMERA1 - > はaddChild(geode1)。
    geode1 - > getOrCreateStateSet() - > SETMODE(GL_LIGHTING、OSG ::がstateAttribute :: OFF)。
    geode1 - > addDrawable(geometry1は); 


    リターンcamera1.release(); 
} 


int型のmain()
{ 
    OSG :: ref_ptr <osgViewer ::ビューア> viewer1 = 新しいosgViewer ::ビューア。
    OSG :: ref_ptr <OSG ::グループ>グループ1 = 新しいOSG ::グループ。

    OSG :: ref_ptr <OSG ::ノード>ノード1 = osgDB :: readNodeFile(" D:\\参考手册\\ BIM \\ OSG \\ build20190628.osgb " )。

    GROUP1 - >はaddChild(createBackground(" D:\\参考手册\\画像\\ 104.jpg " ))。
    group1に - >はaddChild(ノード1。取得()); 

    viewer1 - > getCamera() - > setClearMask(GL_DEPTH_BUFFER_BIT)。
    viewer1 - > setSceneData(グループ1。取得)(); 
    viewer1 - > setUpViewInWindow(2002009606000 ); 

    戻る > viewer1- ラン(); 
}

 

おすすめ

転載: www.cnblogs.com/herd/p/11116470.html