重构osgViewer
部分代码是直接拷贝的
暂时不实现多线程,只保留多线程扩展性
- osg::GraphicsContext::runOperations
- 仅执行operations,不再调用相关相机(视口)Renderer;调用相机(视口)Renderer由Window完成
- osg::GraphicsContext::resized
- 仅更新Traits,不再更新相关相机(视口)Viewport和投影矩阵;更新相机(视口)Viewport和投影矩阵由Viewport完成
- 由外部(窗口)系统驱动窗口绘制
- 由外部驱动帧前进
- 将事件遍历从帧绘制中剥离
- 弃用osgViewer::GraphicsWindow概念,使用opeViewer::GraphicsWindow概念
- 弃用osgViewer::ViewerBase概念,使用opeViewer::Window概念
- 弃用osgViewer::View概念,使用opeViewer::Viewport概念
classDiagram
class Window
class Viewport {
camera
slaves
}
class Camera
class Scene
class Renderer
Window o-- Viewport
Viewport *-- Camera
Camera *-- Renderer
Viewport --> Scene
类 | 名称 | 基本说明 |
---|---|---|
Window | 窗口 | 包含若干视口 |
Viewport | 视口 | 显示一个场景 |
camera | 视口相机 | 描述视口渲染属性,包含一个渲染器 |
slaves | 视口从相机 | - |
Scene | 场景 | - |
Renderer | 渲染器 | - |
- 移除多线程等内容
- 明确窗口、视口的概念
替换osgQt
多线程?
多上下文(qt每个窗口一个上下文)切换?
虽然可以通过
Qt::AA_ShareOpenGLContexts
启用全局共享上下文