乙個困擾我乙個多星期的Nebula3的BUG

2021-08-24 19:00:18 字數 2466 閱讀 6747

最近看了一些physx的東西, 本想寫個demo練練手, 結果遇到乙個非常詭異的問題

當我興沖沖的用wizard建了乙個工程, 編譯, 執行, 竟然一片黑?

奇怪啊, 這個wizard程式應該沒問題才對, 要不然我怎麼敢發布出來?

換成release, 編譯...結果正常!

用pix跟蹤了一下發現, 兩個版本的變換矩陣不一樣!

當時就茫然了...拿sdk自帶的testviewer編譯執行了一下, debug版竟然是這樣的:

只能看到兩隻腳, 滑鼠操作沒有反應!

太崩潰了~

**肯定沒修改, 因為我本機是架設了svn的, 一切修改都有記錄

重新安裝乙個arip2009, 結果仍然一樣!

然後qq詢問同樣研究nebula的朋友, 他們的結果是對的!

我就把我編譯的testviewer.debug.exe發過去, 結果在他們那邊也是正常的...

然後我就理所當然的排除了**錯誤的可能性

首先懷疑自己的軟體環境是不是有衝突, 因為我習慣裝一大堆軟體.....

正好趕上win7出rtm, 還正好在超頻論壇發現了我主機板的啟用bios(當初花錢弄了個超頻專用的, 結果買回來也沒超-_-), 於是就公升級了...

雖說身為乙個軟體開發人員, 用盜版是可恥的, 但為了解決眼下的問題, 我等不到win7開始賣了

xp->win7, dx sdk march 2008->march 2009, vs2005->vs2008, 9800gt driver, svn,etc, updated, too......

然後我就滿懷希望地在全新的環境下又編譯了一遍......結果仍然不對

我當時就鬱悶了, 難道是硬體出了問題? 不對啊, release是正常的-_-

翻出n3 sdk的上個版本, 編譯之, 正常...

難道是編譯選項的問題? 全部改回去, 編譯, 仍然不行

又找了個跟我軟體硬體環境都幾乎一樣的哥們測試了一下, 他那兒也正常!

又找了個哥們, 終於他那裡出現一樣的症狀了, 不過他不搞3d, 沒法一起查了-_-

跟倒數第二個哥們辯論了一番, 他說了句: 為什麼不能操作呢?

一句話驚醒夢中人:一直以來我都是把注意力放到變換矩陣為什麼不正確了, 以為矩陣不正確所以才沒法操作

於找到操作的處理**, 看到了這樣一段:

// process gamepad input float zoomin = 0.0f; float zoomout = 0.0f; float2 panning(0.0f, 0.0f); float2 orbiting(0.0f, 0.0f); if (gamepad->isconnected()) if (gamepad->buttondown(gamepad::startbutton) || gamepad->buttondown(gamepad::backbutton)) float frametime = (float) this->getframetime(); zoomin += gamepad->getaxisvalue(gamepad::righttriggeraxis) * frametime * gamepadzoomspeed; zoomout += gamepad->getaxisvalue(gamepad::lefttriggeraxis) * frametime * gamepadzoomspeed; panning.x() += gamepad->getaxisvalue(gamepad::rightthumbxaxis) * frametime * gamepadpanspeed; panning.y() += gamepad->getaxisvalue(gamepad::rightthumbyaxis) * frametime * gamepadpanspeed; orbiting.x() += gamepad->getaxisvalue(gamepad::leftthumbxaxis) * frametime * gamepadorbitspeed; orbiting.y() += gamepad->getaxisvalue(gamepad::leftthumbyaxis) * frametime * gamepadorbitspeed; }

嗯,我是燒的插了個360的手柄, 不會放那兒不動也會影響操作吧? 注釋掉, 編譯, debug結果終於正常了!

下斷點觀察, 發現 float frametime = (float) this->getframetime();返回的是乙個無效值.....汗

轉到frametime的老窩, 發現了這樣一件事:

這倆變數竟然沒初始化? 瘋掉了...當初也想過變數未初始化的原因, 因為這是導致debug/release不一樣結果最常見的原因.

但是在別人機器上執行正常讓我排除了**錯誤的可能性, 一直在找執行環境的問題

問了下那個同命相連的哥們, 他也插了個360的手柄玩mgs來著, 崩潰

最後解決辦法, 把上面那兩個變數的注釋符去掉, 編譯, ok.........

乙個困擾我乙個多星期的Nebula3的BUG

最近看了一些physx的東西,本想寫個demo練練手,結果遇到乙個非常詭異的問題 當我興沖沖的用wizard建了乙個工程,編譯,執行,竟然一片黑?奇怪啊,這個wizard程式應該沒問題才對,要不然我怎麼敢發布出來?換成release,編譯.結果正常 用pix跟蹤了一下發現,兩個版本的變換矩陣不一樣 ...

乙個困擾我乙個多星期的Nebula3的BUG

最近看了一些physx的東西,本想寫個demo練練手,結果遇到乙個非常詭異的問題 當我興沖沖的用wizard建了乙個工程,編譯,執行,竟然一片黑?奇怪啊,這個wizard程式應該沒問題才對,要不然我怎麼敢發布出來?換成release,編譯.結果正常 用pix跟蹤了一下發現,兩個版本的變換矩陣不一樣 ...

2018最後乙個星期

2018最後乙個星期,人生跌倒谷底,未曾想自己也會如此狼狽,34歲剛到,中年危機。2018.10.29二胎也誕生了,本該非常高興的事情,但剛好公司有乙個調整,要將我調整到另外乙個專案中 實際上是降級 這個是我職業生涯第一次遇到,真的非常不理解,但細想也理解,剛好公司p2p的業務利潤歸零,人員是非常的...