类的初始化列表_探索未知种族之osg类生物---渲染遍历之draw函数二
我們今天今天真是進(jìn)入SceneView::draw()函數(shù)。
1、判斷主相機(jī)是否為隱藏狀態(tài)也就是(camera->getNodeMask()==0),隱藏狀態(tài)就會(huì)退出這個(gè)draw函數(shù)。
2、開(kāi)始初始化osg::state類,上一節(jié)我們對(duì)osg::state類進(jìn)行了簡(jiǎn)單的介紹。這里就是設(shè)置了state的framestamp以及displaySetting的設(shè)定。再就是初始化opengl的擴(kuò)展功能工作通過(guò)state->initializeExtensionProcs()函數(shù)進(jìn)行。
3、初始化一個(gè)文理對(duì)象管理器,主要功能就是維護(hù)了一個(gè)map,保存紋理,生成新的紋理對(duì)象以及刪除紋理對(duì)象等。以及初始化一個(gè)glBuffer的管理對(duì)象(在osg::BufferObject中的GLBufferObjectManager類)。
4、判斷這個(gè)draw函數(shù)是否為第一次進(jìn)入,通過(guò)_initCalled來(lái)判斷。如果是第一次進(jìn)入則就需要進(jìn)行對(duì)所有的場(chǎng)景圖形中的對(duì)象進(jìn)行初始化操作,通過(guò)nodevisitor進(jìn)行。如果我們?cè)阡秩具^(guò)程成加載未初始化的數(shù)據(jù),這需要調(diào)用update和cull自動(dòng)調(diào)用。
5、為了支持多管道系統(tǒng),將推遲刪除OpenGL顯示列表和紋理對(duì)象,直到OpenGL上下文是最初創(chuàng)建對(duì)象時(shí)的正確上下文。 在這里,我們知道我們所處的上下文,以便刷新適當(dāng)?shù)木彺妗榇?#xff0c;SceneView 類提供了一個(gè)成 員變量_requiresFlush,用以避免多個(gè)圖形線程同時(shí)執(zhí)行對(duì)象的清理工作。
6、下一步就是場(chǎng)景繪制的核心工作了,OSG 為立體顯示提供的支持也在這里體現(xiàn)出來(lái) 。針對(duì)不同的立體顯示設(shè)置(DisplaySettings::getStereoMode),此處均提供 了詳盡的處理流程(譬如 ANAGLYPHIC 互補(bǔ)色顯示,OSG 將負(fù)責(zé)使用紅色掩碼渲染左眼 視圖,使用補(bǔ)色青色掩碼渲染右眼視圖),感興趣的朋友不妨在這里細(xì)細(xì)品味,甚至把您所 設(shè)計(jì)的立體顯示方案于其中實(shí)現(xiàn)。立體渲染我們會(huì)在以后的osg+hololens中介紹。現(xiàn)在我們僅針對(duì)非立體顯示的情形進(jìn)行介紹
1)首先是設(shè)置渲染臺(tái)(RenderStage)的讀/寫(xiě)緩存(通常包括 GL_NONE, GL_FRONT_LEFT,GL_FRONT_RIGHT,GL_BACK_LEFT,GL_BACK_RIGHT,GL_FRONT, GL_BACK,GL_LEFT,GL_RIGHT,GL_FRONT_AND_BACK 以及 GL_AUX 輔助緩存), 其中的值是根據(jù)攝像機(jī)的 setDrawBuffer 和 setReadBuffer 函數(shù)來(lái)設(shè)定的。
2)確保顏色掩碼的每個(gè)顏色通道都是被激活的(使用 osg::ColorMask) 。
3)執(zhí)行“前序渲染”渲染臺(tái)的繪制(RenderStage::drawPreRenderStages) 。
4)執(zhí)行當(dāng)前渲染臺(tái)(即渲染樹(shù)的根節(jié)點(diǎn))的繪制(RenderStage::draw),無(wú)疑這是場(chǎng)景 繪制的核心部分。 在結(jié)束了渲染樹(shù)的繪制之后,SceneView::draw 函數(shù)還負(fù)責(zé)恢復(fù)所有的 OpenGL 狀態(tài)(使 用 State::popAllStateSets 函數(shù)),判斷是否在繪制過(guò)程中出現(xiàn)了 OpenGL 繪圖命令錯(cuò)誤,并將 錯(cuò)誤信息打印出來(lái)。
這里我們就會(huì)發(fā)現(xiàn)draw和cull的套路是一樣的,我們需要進(jìn)入RenderStage::draw中繼續(xù)探究。
原文鏈接 探索未知種族之osg類生物---渲染遍歷之draw函數(shù)二
總結(jié)
以上是生活随笔為你收集整理的类的初始化列表_探索未知种族之osg类生物---渲染遍历之draw函数二的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 面板没了_LCD面板疯狂涨价 白菜价的5
- 下一篇: apimodel 可以重复吗_【惠蓉保】