#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(0、960、0、600 ); CAMERA1 - > SETVIEWPORT(0、0、960、600 )。 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.0、0.0、0.0 ))。 頂点 - >一back(OSG :: Vec3(960.0、0.0、0.0 ))。 頂点 - >一back(OSG :: Vec3(960.0、600.0、0.0 ))。 頂点 - >一back(OSG :: Vec3(0.0、600.0、0.0 ))。 geometry1は - > setVertexArray(頂点)。 // 压入法线 OSG :: ref_ptr <OSG :: Vec3Array> NORML = 新しいOSG :: Vec3Array。 NORML- >一back(OSG :: Vec3(0.0、0.0、1.0 ))。 geometry1は - > setNormalArray(NORML)。 geometry1は - > setNormalBinding(OSG ::幾何学:: BIND_OVERALL)。 // 纹理坐标 OSG :: ref_ptr <OSG :: Vec2Array> COORD = 新しいOSG :: Vec2Array。 COORD - >一back(OSG :: VEC2(0.0、0.0 ))。 COORD - >一back(OSG :: VEC2(1.0、0.0 ))。 COORD - >一back(OSG :: VEC2(1.0、1.0 )); COORD - >一back(OSG :: VEC2(0.0、1.0 ))。 geometry1は - > setTexCoordArray(0 、COORD)。 geometry1は - > addPrimitiveSet(新しい OSG :: DrawArrays(OSG :: PrimitiveSet :: QUADS、0、4 ))。 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(200、200、960、600、0 ); 戻る > viewer1- ラン(); }