无法使用rastertek教程初始化Direct3D

时间:2016-05-23 14:07:37

标签: directx-11 visual-studio-2015

我对这个rastertek教程有疑问:http://www.rastertek.com/dx11s2tut03.html 问题发生在以下代码行 result = m_device->CreateRenderTargetView(backBufferPtr, NULL, &m_renderTargetView); 结果得到值E_INVALIDARG One or more arguments are invalid.的位置 我无法弄清楚会发生什么。有人能帮助我吗?我使用visual studio 2015社区版,HP Pavilion,Windows 8.1

谢谢

1 个答案:

答案 0 :(得分:2)

通过将D3D11_CREATE_DEVICE_DEBUG作为Flags参数传递给D3D11CreateDeviceAndSwapChain来启用Direct3D调试层:

// Create the swap chain, Direct3D device, and Direct3D device context.
result = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL,
D3D11_CREATE_DEVICE_DEBUG, &featureLevel, 1,
D3D11_SDK_VERSION, &swapChainDesc, &m_swapChain,
&m_device, NULL, &m_deviceContext);
if(FAILED(result))
{
    return false;
}

这将启用其他调试信息,这些信息应该在您E_INVALIDARG之前提供有关错误的提示。

  

Rastertek教程非常陈旧,广泛使用已弃用的API。我建议您查看Direct3D Game VS TemplateDirectX Tool Kit tutorials作为您对Direct3D 11的第一次介绍。一旦掌握了现代基础知识,您可以重新访问Rastertek教程并从中收集任何其他信息。

故障排除:如果在添加调试标志时D3D11CreateDeviceAndSwapChain发生故障,则可能没有安装正确的调试设备 - 尽管它应该已由VS 2015安装。请参阅this post