先关注排序部分:
RenderPriorityGroup的sort方法中,用到mSolidsBasic,mSolidsDecal,mSolidsDiffuseSpecular,mSolidsNoShadowReceive,mTransparentsUnsorted, mTransparents
void RenderPriorityGroup::sort(const Camera* cam)
{
mSolidsBasic.sort(cam);
mSolidsDecal.sort(cam);
mSolidsDiffuseSpecular.sort(cam);
mSolidsNoShadowReceive.sort(cam);
mTransparentsUnsorted.sort(cam);
mTransparents.sort(cam);
}
调用的堆栈:
SceneManager::_renderScene()
SceneManager::_renderVisibleObjects()
SceneManager::renderVisibleObjectsDefaultSequence()
SceneManager::_renderQueueGroupObjects()
SceneManager::renderBasicQueueGroupObjects() --这里会先排序
SceneManager::renderObjects()
QueueRenderableCollection::acceptVisitor()
QueueRenderableCollection::acceptVisitorGrouped()
SceneManager::SceneMgrQueuedRenderableVisitor::visit()
SceneManager::renderSingleObject()
本文深入探讨了在渲染优先级分组中使用排序算法的重要性,具体介绍了如何通过不同类型的对象(如基本实心、浮雕、扩散镜面等)进行排序,并详细分析了这些操作在场景管理器中的实现过程。
118

被折叠的 条评论
为什么被折叠?



