C++学习(三三一)有关osgUtil::SceneView
Posted hankern
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习(三三一)有关osgUtil::SceneView相关的知识,希望对你有一定的参考价值。
每个渲染器会有两个osgUtil::SceneView,两个是便于在多线程时,一个线程在一个SceneView做裁减,另一个线程在另一个SceneView做绘制,可以并行操作。
osgViewer/Renderer.cpp
Renderer::Renderer(osg::Camera* camera):
osg::Referenced(true),
osg::GraphicsOperation("Renderer",true),
_camera(camera),
_done(false),
_graphicsThreadDoesCull(true),
_compileOnNextDraw(true),
_serializeDraw(false),
_initialized(false),
_startTick(0)
{
_sceneView[0] = new osgUtil::SceneView;
_sceneView[1] = new osgUtil::SceneView;
_availableQueue.add(_sceneView[0].get());
_availableQueue.add(_sceneView[1].get());
}
void Renderer::cull()
{
osgUtil::SceneView* sceneView = _availableQueue.takeFront();
sceneView->cull();
_drawQueue.add(sceneView);
}
void Renderer::draw()
{
osgUtil::SceneView* sceneView = _drawQueue.takeFront();
sceneView->draw();
_availableQueue.add(sceneView);
}
osgUtil::SceneView负责执行裁减和绘制操作。
osgViewer/Renderer.cpp
void Renderer::cull_draw()
{
osgUtil::SceneView* sceneView = _sceneView[0].get();
sceneView->cull();
sceneView->draw();
}
以上是关于C++学习(三三一)有关osgUtil::SceneView的主要内容,如果未能解决你的问题,请参考以下文章
C++学习(三一二)glVertexAttribPointer和glVertexAttrib*的关系
C++学习(三一零)glEnableVertexAttribArray和glVertexAttribPointer的顺序关系