圖形開發確是一件麻煩事,把效果弄好就不易,還得忍受不同卡不同驅動帶來的差異化問題,比如這幾天遇到的與驅動有關的問題就讓我吐血,素聞N卡驅動比A卡驅動穩定,原先一直半信半疑,因為剛好我家里的機器是A卡,公司的機器是N卡,因此在開發引擎的過程中對兩者間的差異有了切身的體會.以下記下碰到的這兩個問題,留待日后查詢
問題1:引擎的地形在公司的9600GT上跑一直都有1000fps左右,前些天拿回到家里的4850跑下一看,結果大跌眼鏡,FPS掉到了100,9600GT和4850應該說是同一級別的顯卡,雖說貌似A卡在游戲這一項的性能不如N卡,但也不能給我銼到差10倍吧,于是開debug 版DX調試看看,發現SetIndices時不時報參數索引長度與流大小不一致錯誤,再一跟蹤,原來由于疏忽,主線程某個函數修改了渲染線程中正在使用的索引緩沖指針,導致SetIndice傳的IndexBuffer和VertexBuffer數據對不上,表現到視覺上是遠處的地形會時不時閃爍一下,這個現象在9600GT的機器上也有,不過由于當時專注于效率問題還沒空去查,想不到在A卡上竟然會導致FPS大幅降低,呵呵,改正這個BUG后FPS上到了1K,與9600GT差不多
問題2:還是A卡和 N卡的效率差異問題,看來只有效率能挑動我的神經了,呵呵。。這次是模型的渲染出了問題,同屏渲染100個骨骼動畫模型 + 地形9600GT有200FPS,4850只有10FPS不到。。開debug版DX調試沒有發現任何問題,再用PIX運行幀分析,按F12的一刻直接崩掉,輸出的log也沒發現有什么問題,崩潰。。總而言之,費了很大功夫,終于發現原來是因為沒有清空instancing渲染狀態,導致后面的所有模型都多畫了N次,還是疏忽阿,為啥在N卡上沒有問題?
關于這里面深層次的原因我沒去追究,有明白的朋友一定告訴我,總體上, N卡驅動所表現出的容錯性的確比A卡驅動好,但換個角度來看,也許隱藏了錯誤并不是件好事,A卡這樣更加有助于開發者早期發現錯誤,避免拖到后面付出更大的代價
posted on 2010-09-22 13:32
清風 閱讀(3355)
評論(4) 編輯 收藏 引用 所屬分類:
圖形