突然发现在DirectXSamples中所有的Sample都出现一个相同的“Bug”:
鼠标在Sample的窗口范围内Move,且此时不按鼠标任何一个按键,相机就会自动向前移动,鼠标停止移动,则相机立即停止移动。
发现”Bug“之后采取了一下行动:
- 发现这个“Bug”之后,立刻打开另外一个Sample,复现了这个”Bug“。(呃,难道我发现了一个惊天大Bug?怎么可能,以前没见过这个问题)
- 立刻重启系统。(难道是刚才那个智障软件导致输入消息异常?)
- 重启之后“Bug”依旧存在。(嗯,难道中毒了?不太可能吧,开始自我怀疑,怀疑我对自己的安全意识过于自信了。。。)
- 冷静了一下,决定调试一下,成功复现了”Bug“。
- 发现只要鼠标移动vPosDelta就不为0,然后vPosDelta是这样算的:
- D3DXVECTOR3 vPosDelta = m_vVelocity * fElapsedTime;
- MouseMove时,m_vVelocity不为0,接着发现了下面这段代码:
- D3DXVECTOR3 vAccel = m_vKeyboardDirection + m_vGamePadLeftThumb;
- ……
- m_vVelocity = vAccel;
- 至此,终于发现了真凶m_vGamePadLeftThumb。
之前没注意过,巨硬的DXSample还支持了GamePad。