osg中HUD抬頭顯示重複投射的問題分析

2021-10-05 15:14:59 字數 1077 閱讀 7540

在osg場景中,採用hud抬頭顯示來顯示模型的運動引數,但是執行的時候發現hud出現重複投射的現象,如圖中紅線框中所示。

抬頭顯示的createhudtext函式如下:

// 建立hud抬頭顯示文字

osg::projection* cosg::createhudtext(void)

//將hud作為group節點的子節點

group_specialeffects->addchild(createhudtext());

//將group節點作為root根節點的子節點

root->addchild(group_specialeffects.get());

//建立視口

view1 = createview(&m_compositeviewer,root,gc,null,0,0,traits->width,traits->height);

上述**即為hud顯示的結構。出現重複投射的問題後,一開始以為是場景中新增陰影效果、天空盒之後和hud不相容或者有衝突的問題,隨即把陰影效果模組、天空盒模組都刪掉,還是不行。

最後把hud顯示都刪掉,發現依然有異常的投射。

這個時候,就有點頭緒了,那應該不是其他模組的影響,有可能是重複的載入了hud顯示模組中的文字資訊。果然,在 preframeupdate函式中,有這麼一行**:

view1->getcamera()->addchild(hudgeode.get());
通過上述問題,有以下兩點的體會:1、寫**的時候一定要仔細、嚴謹,否則會付出更多的經歷和時間去找bug;2、找bug的時候,需要一步步的排查,逐步縮小範圍,排除所有的可疑點後,問題一般就會水落石出了。

抬頭顯示器影響行車安全?

汽車的抬頭顯示器 hud 是專為減少駕駛人的分心而設計的,它可在駕駛人視線範圍內的汽車檔風玻璃上顯示導航資訊 道路號誌以及其他交通相關資料,協助駕駛人將視線專注於所行駛的街道上 這項技術的目的在於提高行車安全。然而,根據加拿大多倫多大學 university of toronto 的研究顯示,hud...

OSG中LabelControl中文顯示

osg預設是不支援中文顯示的,然而在有些時候還是需要中文顯示的,對於osg的中文顯示,網上有很多的解決方案,但是我沒有找到關於labelcontrol的顯示,這裡我把關於labelcontrol的中文顯示分享一下。osg的中文顯示大致來說可以分為3步,我這裡的前2步就是參考網上的解決方案,沒有什麼特...

OSG中除錯資訊顯示

osg 可以將各式各樣的除錯資訊輸出到std cout。這在開發osg 程式時十分有用,你可以藉此觀察osg 的執行的各種操作。鍵盤的 s 鍵對於效能測試十分有用,它將適用osgutil 庫的statistics 類來收集和顯示渲染效能的資訊。迴圈按下 s 鍵 小寫s 可以切換四種不同的顯示方式 1...