调试程序运行时,Direct3D11发出声音

时间:2013-04-20 15:52:26

标签: c++ direct3d11

我有一个简单的块旋转应用程序(基本上是d3d11 Hello World!),但每当我运行它时,我都能听到声音。

我试图通过代码来查看使噪音“发生”的调用,但我无法在任何D3Dinit中找到它。

这是我用来初始化的代码:

    HRESULT hr = D3D11CreateDevice(
        0,                 // default adapter
        md3dDriverType,
        0,                 // no software device
        createDeviceFlags, 
        0, 0,              // default feature level array
        D3D11_SDK_VERSION,
        &md3dDevice,
        &featureLevel,
        &md3dImmediateContext);

这是我附加接口并创建交换缓冲区的地方(注意HR()只是一个宏,如果打开调试就会显示HRESULTS)

    IDXGIDevice* dxgiDevice = 0;
HR(md3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void**)&dxgiDevice));

IDXGIAdapter* dxgiAdapter = 0;
HR(dxgiDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&dxgiAdapter));

IDXGIFactory* dxgiFactory = 0;
HR(dxgiAdapter->GetParent(__uuidof(IDXGIFactory), (void**)&dxgiFactory));

HR(dxgiFactory->CreateSwapChain(md3dDevice, &sd, &mSwapChain));

有谁知道会导致这种可听噪音的发生?

1 个答案:

答案 0 :(得分:2)

当帧速率非常高时,我在某些显卡上发现了这一点。启用vsync通常可以摆脱这种声音。

http://www.techpowerup.com/forums/threads/whine-from-gpu-under-high-frame-rate.157681/

很难在视频中听到但是很明显

http://www.youtube.com/watch?v=3ibkMvhMlgs