3

我有一个简单的块旋转应用程序(基本上是一个 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));

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

4

1 回答 1

2

当帧速率非常高时,我在某些显卡上注意到了这一点。启用垂直同步通常会消除这种声音。

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

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

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

于 2014-01-03T23:43:32.577 回答