zoukankan      html  css  js  c++  java
  • OSG多屏显示问题

    // testMultiScreen.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <osg/Camera>
    #include <osgDB/ReadFile>
    #include <osgGA/TrackballManipulator>
    #include <osgViewer/CompositeViewer>


    osgViewer::View* createView( int screenNum )
    {

     unsigned int width = 800, height = 600;

    //判断了当前是否存在窗体接口
     osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();
     if ( wsi )
     wsi->getScreenResolution( osg::GraphicsContext::ScreenIdentifier(screenNum), width, height );
    //创建Traits

     osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
     traits->screenNum = screenNum;
     traits->x = 0;
     traits->y = 0;
     traits->width = width;
     traits->height = height;
     traits->windowDecoration = false;
     traits->doubleBuffer = true;
     traits->sharedContext = 0;

    //创建一个图形上下文

     osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext( traits.get() );
     if ( !gc ) return NULL;
     osg::ref_ptr<osg::Camera> camera = new osg::Camera;
     camera->setGraphicsContext( gc.get() );
     camera->setViewport( new osg::Viewport(0, 0, width, height) );
     camera->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(width)/static_cast<double>(height),1.0f, 10000.0f );
     GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT;
     camera->setDrawBuffer( buffer );
     camera->setReadBuffer( buffer );

     osg::ref_ptr<osgViewer::View> view = new osgViewer::View;
     view->setCamera( camera.get() );
     view->setCameraManipulator( new osgGA::TrackballManipulator );
     return view.release();
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
     osgViewer::CompositeViewer viewer;

     osgViewer::View* view1 = createView( 0 );
     if ( view1 )
     {
      view1->setSceneData( osgDB::readNodeFile("cessna.osg") );
      viewer.addView( view1 );
     }

     osgViewer::View* view2 = createView( 1 );
     if ( view2 )
     {
      view2->setSceneData( osgDB::readNodeFile("cow.osg") );
      viewer.addView( view2 );
     }

     return viewer.run();


    }

  • 相关阅读:
    GridView与ArrayAdapter的结合
    翻翻git之---闪烁动画的TextView RevealTextView
    希捷硬盘扩容软件-----DiscWizard
    项目管理的酸甜苦辣
    【转】Bootloader之uBoot简介(转)
    【转】uboot移植(一)BootLoader基本概念
    【转】U-boot分析与移植(1)----bootloader分析
    【转】MIPS交叉编译环境的建立
    【转】RTSP实例解析
    【转】Eclipse快捷键 10个最有用的快捷键----不错
  • 原文地址:https://www.cnblogs.com/blogofwu/p/4900830.html
Copyright © 2011-2022 走看看