osgViewer.AcrossAllScreens是OpenSceneGraph中的一个viewer,可以实现在多个屏幕上同时显示场景中的内容。这使得用户可以通过多个屏幕来查看和控制场景,以实现更加全面和自然的交互体验。
typedef std::pair<osg::GraphicsContext*, osg::Viewport*> GraphicsWindowPair;
AcrossAllScreens();
创建一个新的osgViewer.AcrossAllScreens实例对象。
addView(osg::Camera* camera)将一个osg::Camera添加到当前的osgViewer.AcrossAllScreens实例中。
camera : 需要添加的osg::Camera对象。removeView(osg::Camera* camera)从当前的osgViewer.AcrossAllScreens实例中移除一个osg::Camera对象。
camera : 需要移除的osg::Camera对象。getWindows()获取当前osgViewer.AcrossAllScreens实例中所有的GraphicsContext和Viewport对。
GraphicsContext和Viewport对。getWindowPairs()获取当前osgViewer.AcrossAllScreens实例中所有已添加的GraphicsContext和Viewport对。
GraphicsContext和Viewport对。setKeepOriginalViewports(bool keepOriginalViewports)设置是否保留原视窗。如果设置为true,则在多个屏幕中显示场景时,每个视窗的大小和位置保持不变。如果设置为false,则所有的视窗都将自适应到多个屏幕上。
keepOriginalViewports : bool型参数,true表示保留原视窗,false表示不保留原视窗。setMinimumWidth(unsigned int width)设置场景最小宽度(单位:像素)。
width : 场景最小宽度。setMinimumHeight(unsigned int height)设置场景最小高度(单位:像素)。
height : 场景最小高度。setQuitOnDestroyAllWindows(bool quit)设置当所有的窗口都被销毁时是否退出程序。
quit : bool型参数,true表示当所有的窗口都被销毁时退出程序,false表示不退出。run()运行当前osgViewer.AcrossAllScreens实例。这是一个无限循环,只有当程序被强制退出或者setQuitOnDestroyAllWindows(true)时才会退出。
stopThreading()停止渲染线程。在调用这个函数后,将不会有新的画面被渲染,只有当前画面会保留在屏幕上,直到程序结束。
startThreading()开始渲染线程。当调用run()后,渲染线程将自动启动,您不需要再次调用这个函数来手动启动渲染线程。这个函数仅在渲染线程被停止后使用。
setThreadingModel(unsigned int threadingModel)设置渲染线程模式。默认是osgViewer::ViewerBase::DrawThreadPerContext。
threadingModel : 渲染线程模式,可以是以下之一:
osgViewer::ViewerBase::SingleThreaded : 单线程模式。osgViewer::ViewerBase::CullDrawThreadPerContext : 两个线程,分别进行裁剪和绘制。osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext : 三个线程,分别进行摄像机裁剪、裁剪后的绘制、裁剪前的绘制。osgViewer::ViewerBase::DrawThreadPerContext : 多线程模式,每个上下文一个绘制线程。frame()开始进行一帧的渲染。如果没有调用run(),则需要手动调用这个函数进行渲染。
addEventHandler(osgGA::GUIEventHandler* handler)添加一个GUI事件处理器。
handler : 需要添加的GUI事件处理器。removeEventHandler(osgGA::GUIEventHandler* handler)移除一个GUI事件处理器。
handler : 需要移除的GUI事件处理器。getStatsHandler()获取统计信息处理器。
osgViewer::StatsHandler对象,用于显示帧率和其他统计信息。setSceneData(osg::Node* node)设置场景数据。
node : 需要设置的场景数据osg::Node对象。getSceneData()获取当前场景数据。
osg::Node对象。realize()实现当前场景数据,在具有窗口系统的上下文中进行。
isRealized()返回当前场景数据是否已被实现。
getViewerStats()获取osgViewer统计信息。
osg::Stats对象,包含当前视图的统计信息。getViewerFrameStamp()获取osgViewer帧时间戳。
osg::FrameStamp对象,包含关于帧的时间信息。getCamera()获取当前相机。
osg::Camera对象。getView()获取当前视图。
osg:: View对象,包含当前场景的视图信息。getViewMatrix()获取当前视图矩阵。
osg::Matrixd对象。setViewMatrix(osg::Matrixd& matrix)设置当前视图矩阵。
matrix : 需要设置的视图矩阵。getProjectionMatrix()获取当前投影矩阵。
osg::Matrixd对象。setProjectionMatrix(osg::Matrixd& matrix)设置当前投影矩阵。
matrix : 需要设置的投影矩阵。getSceneView()获取场景视图。
osg::View对象,包含当前场景的视图信息。getLight()获取当前光源。
osg::Light对象。setLight(osg::Light* light)设置当前光源。
light : 需要设置的光源osg::Light对象。getViewerBase()获取当前的osgViewer基类。
osgViewer::ViewerBase对象。getSize()获取当前窗口大小。
osg::Vec2对象,表示当前窗口的大小。setDimensions(unsigned int width, unsigned int height)设置窗口大小。
width : 窗口宽度。height : 窗口高度。useCursor(bool value)是否启用鼠标指针。
value : 是否启用鼠标指针。getDisplaySettings()获取当前的显示设置。
osg::DisplaySettings对象。getWindowsByKey(const std::string& key)通过键名获取窗口对象。
key : 键名。
返回值: 返回一个std::vector对象,包含所有对应键名的窗口。
getCameraWithDisplay(int displayNum)通过显示器编号获取相机。
displayNum : 显示器编号。
返回值: 返回一个osg::Camera对象。
getWindowsWithDisplay(int displayNum)通过显示器编号获取窗口。
displayNum : 显示器编号。
返回值: 返回一个std::vector对象,包含所有对应显示器编号的窗口。
getThreads()获取渲染线程。
getThread(uint threadNum)通过线程编号获取渲染线程。
threadNum : 线程编号。
返回值: 返回一个OpenThreads::Thread对象。
setThreadingModel(osgViewer::ViewerBase::ThreadingModel threadingModel, osgViewer::ViewerBase::IncrementalCompileOperation* ico = NULL)设置渲染线程模式。
threadingModel : 渲染线程模式,可以是以下之一:
osgViewer::ViewerBase::SingleThreaded : 单线程模式。osgViewer::ViewerBase::CullDrawThreadPerContext : 两个线程,分别进行裁剪和绘制。osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext : 三个线程,分别进行摄像机裁剪、裁剪后的绘制、裁剪前的绘制。osgViewer::ViewerBase::DrawThreadPerContext : 多线程模式,每个上下文一个绘制线程。ico : 递增式编译操作。
resumeRunning()重新运行。
getOriginalWidth(unsigned int cameraIndex)获取指定相机的原始宽度。
cameraIndex : 相机索引。
返回值: 返回指定相机的原始宽度。
getOriginalHeight(unsigned int cameraIndex)获取指定相机的原始高度。
cameraIndex : 相机索引。
返回值: 返回指定相机的原始高度。
findViewContaining(osg::Camera* camera)查找包含指定相机的视图。
camera : 相机对象。
返回值: 返回包含指定相机的osg::View对象。
findViewBySceneData(osg::Node* node)查找给定场景数据所在的视图。
node : 场景数据。
返回值: 返回一个osg::View对象。
eventTraversal()事件遍历。
updateTraversal()更新遍历。
renderingTraversal()渲染遍历。
getViewer()获取当前的osgViewer。
osgViewer::Viewer对象。setDisplaySettings(osg::DisplaySettings* ds)设置显示设置。
ds : 显示设置。getIncrementalCompileOperation()获取递增式编译操作。
osgViewer::ViewerBase::IncrementalCompileOperation对象。setIncrementalCompileOperation(osgViewer::ViewerBase::IncrementalCompileOperation* ico)设置递增式编译操作。
ico : 递增式编译操作。getDatabasePager()获取数据库页面管理对象。
osgDB::DatabasePager对象。setSceneData(osg::Node* node, osg::NodeVisitor* nv)设置场景数据,并使用指定的节点访问器进行遍历。
node : 需要设置的场景数据。nv : 节点访问器。getViewerStatsHandler()获取统计信息处理器。
osgViewer::StatsHandler对象,用于显示帧率和其他统计信息。addEventHandler(osg::ref_ptr<osgGA::GUIEventHandler> eventHandler)添加一个GUI事件处理器。
eventHandler : 需要添加的GUI事件处理器。removeEventHandler(osg::ref_ptr<osgGA::GUIEventHandler> eventHandler)移除一个GUI事件处理器。
eventHandler : 需要移除的GUI事件处理器。getContexts()获取当前渲染上下文。
getWindowsByIdentifier(const std::string& identifier)通过标识符获取窗口。
identifier : 标识符。
返回值: 返回一个std::vector对象,包含所有对应标识符的窗口。
setCamera(osg::Camera* camera)设置当前相机。
camera : 需要设置的相机。startThreading()开始渲染线程。当调用run()后,渲染线程将自动启动,您不需要再次调用这个函数来手动启动渲染线程。这个函数仅在渲染线程被停止后使用。
stopThreading()停止渲染线程。在调用这个函数后,将不会有新的画面被渲染,只有当前画面会保留在屏幕上,直到程序结束。