本人对osgEarth3.3渲染过程进行了跟踪,跟踪结果显示渲染过程,有助于兄弟们认识osgEarth渲染原理,减少学习时间。
viewer.setSceneData(mRoot);想必大家了解这一行,设置viewer的场景数据,才有下面的帧显示
viewer.frame(); 主程序从这里开启渲染:
ViewerBase::frame()调用从这里开始,逐步向下传递调用,中间有循环
ViewerBase::renderingTraversals()
GraphicsContext::runOperations(){if (camera->getRenderer()) (*(camera->getRenderer()))(this);}
void Renderer::operator () (osg::GraphicsContext* /*context*/)
{
if (_graphicsThreadDoesCull)
{
cull_draw();
}
else
{
draw();
}
}
Renderer::cull_draw()
SceneView::draw(){_renderStage->draw(_renderInfo,previous);}
Drawable::draw
Drawable::createVertexArrayState
SharedGeometry::createVertexArrayState
RenderStage::draw
RenderStage::drawInner
RenderBin::draw
RenderStage::drawImplementation
RenderBin::drawImplementation
RenderLeaf::render
LayerDrawableGL3::drawImplementation(osg::RenderInfo& ri) const
DrawTileCommand::draw(osg::RenderInfo& ri) const
LayerDrawable::drawImplementation(ri)
Drawable::draw
Drawable::inline void drawInner(RenderInfo& renderInfo) const
SharedGeometry::drawImplementation