osgengine.cpp:278:55: error: no member named 'QUIT_LEAVE_RUNNING' in 'osgViewer::ViewerBase'
时间: 2023-07-28 22:07:01 浏览: 204
`osgViewer::ViewerBase` 类中确实没有 `QUIT_LEAVE_RUNNING` 这个成员,可能是因为你使用的是旧版本的 OpenSceneGraph 库。
在较旧的版本中,可以使用以下方式设置退出模式:
```cpp
viewer.setRunMaxFrameRate(0.0); // 设置每秒最大帧率为0
viewer.realize(); // 实现 Viewer
while (!viewer.done()) {
viewer.frame(); // 每帧渲染
}
```
这里通过设置每秒最大帧率为0来实现退出 Viewer,然后在主循环中使用 `viewer.frame()` 函数渲染每一帧。当 `viewer.done()` 函数返回 true 时,表示 Viewer 已经退出,此时可以关闭程序。
如果你使用的是较新的 OpenSceneGraph 库,可以使用以下方式设置退出模式:
```cpp
viewer.setRunFrameScheme(osgViewer::ViewerBase::FrameScheme::ON_DEMAND);
viewer.stopThreading();
```
这里使用 `setRunFrameScheme()` 函数设置退出模式为 `ON_DEMAND`,然后使用 `stopThreading()` 函数在单线程模式下关闭 Viewer。
希望我的回答能够帮助到你。
相关问题
osgViewer::Viewer怎么调用quit函数
要调用 `osgViewer::Viewer` 的 `quit()` 函数,你可以在程序中使用以下代码:
```cpp
viewer.setDone(true); // 设置退出标志
```
当 `setDone(true)` 被调用后,`osgViewer::Viewer` 会设置一个退出标志,然后在下一帧渲染时关闭 Viewer 并退出程序。
你也可以在程序中使用以下代码:
```cpp
viewer.setRunFrameScheme(osgViewer::ViewerBase::QUIT_LEAVE_RUNNING);
viewer.stopThreading(); // 在单线程模式下关闭 Viewer
```
这里设置 `setRunFrameScheme()` 为 `osgViewer::ViewerBase::QUIT_LEAVE_RUNNING`,这样 Viewer 会在下一帧渲染时关闭并退出程序。然后调用 `stopThreading()` 函数以确保在单线程模式下关闭 Viewer。
以上是两种调用 `osgViewer::Viewer` 的 `quit()` 函数的方法,你可以根据自己的需要选择其中一种。
阅读全文