Visual studio D3D11 CreateDeviceAndSwapChain使Visual Studio无法使用

Visual studio D3D11 CreateDeviceAndSwapChain使Visual Studio无法使用,visual-studio,visual-studio-2013,directx-11,lag,Visual Studio,Visual Studio 2013,Directx 11,Lag,嗨,我有一个很奇怪的问题。 当我从程序的开始一步一步地完成我的代码时,这很好,但是当我到达代码中创建设备和交换链的部分时,VisualStudio开始滞后于输入,变得不可用。我的鼠标也给出了延迟响应。停止它的唯一方法是按住ctrl+alt+del并关闭VisualStudio 这是问题所在行的代码 HRESULT hr = S_OK; RECT rc; GetClientRect((*pWindowHandle), &rc); UINT width = rc.right - rc.le

嗨,我有一个很奇怪的问题。 当我从程序的开始一步一步地完成我的代码时,这很好,但是当我到达代码中创建设备和交换链的部分时,VisualStudio开始滞后于输入,变得不可用。我的鼠标也给出了延迟响应。停止它的唯一方法是按住ctrl+alt+del并关闭VisualStudio

这是问题所在行的代码

HRESULT hr = S_OK;

RECT rc;
GetClientRect((*pWindowHandle), &rc);
UINT width = rc.right - rc.left;
UINT height = rc.bottom - rc.top;

UINT createDeviceFlags = 0;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

D3D_DRIVER_TYPE driverTypes[] =
{
    D3D_DRIVER_TYPE_HARDWARE,
    D3D_DRIVER_TYPE_WARP,
    D3D_DRIVER_TYPE_REFERENCE,
};
UINT numDriverTypes = ARRAYSIZE(driverTypes);

D3D_FEATURE_LEVEL featureLevels[] =
{
    D3D_FEATURE_LEVEL_11_0
};
UINT numFeatureLevels = ARRAYSIZE(featureLevels);

DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory(&sd, sizeof(sd));
sd.BufferCount = 1;
sd.BufferDesc.Width = width;
sd.BufferDesc.Height = height;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferDesc.RefreshRate.Numerator = 60;
sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.OutputWindow = (*pWindowHandle);
sd.SampleDesc.Count = 1;
sd.SampleDesc.Quality = 0;
sd.Windowed = TRUE;
sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;     // allow full-screen switching

for (UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++)
{
    m_driverType = driverTypes[driverTypeIndex];
    hr = D3D11CreateDeviceAndSwapChain(NULL, m_driverType, NULL, createDeviceFlags, featureLevels, numFeatureLevels,
        D3D11_SDK_VERSION, &sd, &m_pSwapChain, &m_pd3dDevice, &m_featureLevel, &m_pImmediateContext);
    if (SUCCEEDED(hr))
        break;
}
编辑: 在输出的那一行,我得到一行

A thread <threadnumber> has exited with code 0(0x0)
线程已退出,代码为0(0x0)

我遇到了完全相同的问题,通过更新视频驱动程序解决了这个问题(我有nVidia GeForce 660,现在我使用344.75,我使用“clean”选项安装了它)。以前的司机是335岁左右。此外,如果它没有帮助,请尝试禁用nVidia ShadowPlay(虽然对我没有帮助),我认为如果它在D3D中安装了一些键盘挂钩,可能会存在一些问题。

在VS中读取输出。它可以帮助您使用lotI并不意味着。。。设置了D3D11_创建_设备_调试标志,所以在运行时的输出窗口中,应该有一些有用的信息,这是问题的一部分。一旦我暂停VisualStudio,它将无法执行任何操作。它还能阻止我的鼠标移动。再次执行任何操作的唯一方法是通过任务管理器将其关闭。由于项目仍然正确运行,因此无法查看输出。穿过这条线,当它到达那条线时,一条线退出。嘿,我忘了回来改变这个,我实际上发现我的修复确实关闭了暗影游戏!
A thread <threadnumber> has exited with code 0(0x0)