前几天,我决定学习一点 DirectX/Dirext3D 编程。我下载了一个显示 directX11 的示例,它编译并运行良好,但是,程序运行时我的 GPU 会发出啸叫声。如果我关闭应用程序,啸叫声会立即停止。重新启动应用程序,啸叫声又回来了,等等。我想这可能只是灰尘问题,所以我今天去商店买了一罐二氧化碳并清理了它。清洁后,啸叫声仍然存在。
更奇怪的是,哨声似乎是可以控制的——我可以用鼠标调整应用程序窗口的大小来改变哨声的音调。我把框架弄得越大,哨声就越微弱,窗口越小,哨声的音调就越高。当我用 OpenGL 编程时,我也没有遇到这个问题;事实上,根本没有哨声。
我认为有两个原因可能导致此问题。1. DirectX/Radeon 驱动程序行为异常。2. GPU 中的风扇正在加速以补偿不同的使用情况。
这是 DxDiag 的打印输出,显示了我的计算机规格和其他功能: http://pastebin.com/CZE0UZiZ (驱动程序更新后的新更新设置见下文)
我只是想知道,在我开始在我的 BIOS 中搜索并在互联网上搜索补丁之前,是否有人可以指出我如何解决这个问题。
感谢大家。
编辑:
我更新了驱动程序,但啸叫声仍然存在。还要注意的是,当我最大化窗口时,啸叫声几乎不存在。
这是 DxDiag 的新打印输出(更新了我的驱动程序)
另一处编辑:
我注意到在 Direct3D 示例中,他们不允许渲染线程进入休眠状态,因此我添加了一个简单的“Sleep(1)”,这样就解决了啸叫问题。但是,我仍然想知道为什么会发生这种情况。通常,像这样让无限线程进入休眠状态意味着 CPU 可以休息一瞬间,但这也会产生啸叫吗?
从技术上来说,这个问题已经解决了,但在正确的情况下,它仍然存在。我不想让这个问题就这样悬而未决,但我想,在我找到一个有效且合适的解决方案之前,它只能这样了。