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()
停止渲染线程。在调用这个函数后,将不会有新的画面被渲染,只有当前画面会保留在屏幕上,直到程序结束。