OSG学习笔记7—投影墙显⽰
// OSG_5_6.cpp : 定义控制台应⽤程序的⼊⼝点。 //投影墙显⽰:4个视景器辅助相机拼接在⼀起,同时显⽰⼀个场景的效果。 #include "stdafx.h"
#include<osg/Group>
#include<osgDB/ReadFile>
#include<osgViewer/Viewer>
/*⽤于创建⼀个与相机对应的图形设备,也是窗⼝设备,其属性参数使⽤特性类Traits定义,并返回这个相机对象。*/ osg::Camera* creatCamera(int x, int y, int w, int h)
{
/
/在windows系统中,这将构建⼀个w*y的不带标题栏的普通窗⼝,使⽤双缓存来实现渲染内容的显⽰与交换。
osg::ref_ptr<osg::GraphicsContext::Traits> traits =
排卵检测仪new osg::GraphicsContext::Traits;
traits->windowDecoration = false;
traits->x = x;
traits->y = y;
traits->width = w;
traits->height = h;
traits->doubleBuffer = true;
osg::DisplaySettings* ds = osg::DisplaySettings::instance();
纳米烟嘴traits->alpha = ds->getMinimumNumAccumAlphaBits();//图形设备的alpha缓存
traits->stencil = ds->getMinimumNumStencilBits();//图形设备的模板缓存
traits->sampleBuffers = ds->getMultiSamples();//图形设备的重采样缓存
traits->samples = ds->getNumMultiSamples();//图形设备的重采样数设置
osg::ref_ptr<osg::GraphicsContext> gc =
osg::GraphicsContext::());
osg::ref_ptr<osg::Camera> camera = new osg::Camera;
camera->());
camera->setViewport(new osg::Viewport(0, 0, w, h));
lease();
}
int _tmain(int argc, char ** argv)
{
osg::ArgumentParser arguments(&argc,argv);
osg::Node* model = osgDB::readNodeFiles(arguments);
if (!model) model = osgDB::readNodeFile("cow.osg");
osgViewer::Viewer viewer;
//向视景器重添加多个从属相机,它们共享主相机的观察矩阵和投影矩阵,以及同⼀个场景树结构,并有适当的偏移设置。 viewer.addSlave(creatCamera(100, 100, 400, 300), osg::Matrixd::translate(1.0, -1.0, 0.0), osg::Matrixd()); viewer.addSlave(creatCamera(505, 100, 400, 300), osg::Matrixd::translate(-1.0, -1.0, 0.0), osg::Matrixd());
viewer.addSlave(creatCamera(100, 405, 400, 300), osg::Matrixd::translate(1.0, 1.0, 0.0), osg::Matrixd());
viewer.addSlave(creatCamera(505, 405, 400, 300), osg::Matrixd::translate(-1.0, 1.0, 0.0), osg::Matrixd());
viewer.setSceneData(model);
return viewer.run();大型盆景花盆
}电虾机电路图
代码中⽤到的类:
osg::GraphicsContext::Traits 特性参数类,它包含⼀系列可能影响图形设备创建的属性参数。陶瓷接线柱
viewer.addSlave(Camera* camera,const Matrix& projectionOffset,const Matrix& viewOffset,bool useMatersSceneData);
projectionOffset:设置投影矩阵偏移
viewOffset:设置观察矩阵偏移龙脑抑菌剂
useMatersSceneData:是否使⽤主相机的节点树
当设置⼀个视景器的视图是,需要定义以下⼏个部分:
所观察的场景节点树
所使⽤的漫游器⼯具,以及附加的交互事件处理器。
场景的住相机