解決cocos2d-x部分精靈顯示為黑塊的問題及反思


系統描述:
框架版本:cocos2d-x 2.1.0
系統版本:Windows XP
編輯平台:Visual Studio 2008
cpu:intel i3 2320
顯卡:HD graphic 2000
顯卡驅動版本:暫時記不清楚
問題描述:
去年年前,Boss 將公司的舊框架的游戲移植到cocos2d-x上以后,就交給我和同事,讓我們對cocos2d-x進行熟悉。在最初始的版本上,在新框架實現的游戲,在同事的機器上能夠按照Boss的預期運行,可是到了我的機器上,部分精靈,隨機性顯示為整個黑塊。由於當時我手頭上,尚有其他工作沒有完成,就沒有進一步去解決,Boss給出的初步建議,讓我更新一下顯卡驅動。
今天,Boss 讓我熟悉新框架。將同事修改的最新版本check out。編譯運行后,在同事的機器上能夠完美運行的程序,到了我的機器上,部分精靈仍然不能正常顯示,依舊為和精靈加載的紋理同樣大小的黑塊。
第一階段:我第一反應,就是清理解決方案,全部重新編譯。如此反復幾次,總結出規律,黑塊基本出現在最后加載資源上,而且數量上也是時多時少。在百思不得其解的情況下,我去群里面問,結果可能大家都忙吧,沒有人理會我。好吧,我只能百度。關鍵詞:cocos2d-x 精靈 黑塊。基本上沒有看到我想看到的東西。好吧,我換google,也沒有搜到我想要的東西。這時候,群里面有人找我私聊,最后發現也是一個新手,給的建議和我想的基本一樣:找百度。
第二階段:繼續編譯運行。不小心發現,在調試運行輸出窗口有信息輸出:type color 6占大部分,有零散 openGL error 0x0505的輸出信息。我稍微數了下,數量上和出現的黑塊,基本上差不多。我立刻定位輸出的信息來源,是opengL 的調試信息輸出。我沒有繼續思考下去,然后就去找google。在變換了幾次關鍵詞,查到的有用信息仍然很少,基本指向,可能是顯卡驅動對opengL支持不好。我重新裝了顯示驅動,結果,現象依舊。我迷茫了。
第三階段:在毫無頭緒幾個鍾以后,我終於想到,在代碼去去確認錯誤代碼的含義:OUT_OF_MEMERY。內存溢出,我馬上把我和我同事的機器進行了對比。我們的機器都是集成顯卡,同事機器的內存條只有2G,而我的有4G。這顯然不是主存的原因,肯定是顯卡共享內存分配不足照成的。我立刻查看顯卡共享的內存的大小64-256M。在沒有運行游戲時,共享顯存使用量為48M。我將共享內存設大以后,黑塊明顯減少。反而是bios設置,弄了很久,才把共享內存設置到最大1024,黑塊消失,調試警告也消失。
 
反思:
發現問題后,沒有認真思考問題,將問題抽象出來,就急於找解決方法,這無疑是本末倒置的做法。
關於代碼BUG調試,第一步是要還原錯誤,第二步分析錯誤,提出假設,再次重現錯誤。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM