c++ - 初始化 Directx 11.0 时出现两个问题 - 1.FeatureLevel,2. 4xMSAA 质量

标签 c++ visual-studio-2012 directx-11

1.我正在通过使用 DirectX 11 进行 3D 游戏编程简介这本书学习 D3D 的初始化部分。当我编译并运行书中的代码时,我从 VS2012 收到一条消息,上面写着“Direct3D Feature Level 11 unsupported ",这表明我的机器成功创建了设备,但不支持 Directx 11。这是实际代码:

UINT createDeviceFlags = 0;
#if defined(DEBUG) || defined(_DEBUG)
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
D3D_FEATURE_LEVEL featureLevel;
ID3D11Device* md3dDevice;
ID3D11DeviceContext* md3dImmediateContext;
HRESULT hr = D3D11CreateDevice(
0, // default adapter
D3D_DRIVER_TYPE_HARDWARE,
0, // no software device
createDeviceFlags,
0, 0, // default feature level array
D3D11_SDK_VERSION,
&md3dDevice,
&featureLevel,
&md3dImmediateContext);
if( FAILED(hr) )
{
MessageBox(0, L"D3D11CreateDevice Failed.", 0, 0);
    return false;
}
if( featureLevel != D3D_FEATURE_LEVEL_11_0 )
{
MessageBox(0, L"Direct3D  Feature Level 11 unsupported", 0, 0);

}

但我在 dxdiag 中检查了几次,并被告知 Directx 版本是 Directx 11.0。我已经检查了尽可能多的可能相关的答案,但我找到了那些解决方案,例如安装 Direct X Runtime 和远程 Windows 调试器工具,但是他们没有工作。我的操作系统是Win7-64bit,IDE是vs2012,使用C++,Directx SDK是DXSDK_Jun10;

2.当我通过以下代码检查 4xMsaa 质量级别时,发现 m4xMsaaQuality 为 0 时出现了第一个问题:

UINT m4xMsaaQuality;
md3dDevice->CheckMultisampleQualityLevels(
DXGI_FORMAT_R8G8B8A8_UNORM, 1, & m4xMsaaQuality);
assert(m4xMsaaQuality > 0 );

我只知道这是不支持的格式和样本计数组合的结果,但我不知道为什么会这样。当我玩视频游戏时,我可以毫无障碍地同时打开 Directx 11 和 4X MSAA。希望有人能给我一些帮助,我会关注这个问题。

最佳答案

我根据自己的经验发布此消息,这只是一种预感,但让我猜测:您有一个集成的 Intel 显卡和一个常规的 DX11 兼容 GPU。

问题可能是由于您的应用程序默认选择了较弱的 GPU。如果是这种情况,请尝试强制系统始终使用更好的 GPU。我不知道你运行的是什么硬件,但游戏通常被编程为始终使用可用的最佳 GPU。然而,自定义应用程序倾向于选择节能 GPU,因为它在仅运行 Windows 时是默认的。您应该有一些 GPU 控制面板,您可以在其中切换 GPU 使用首选项。

关于c++ - 初始化 Directx 11.0 时出现两个问题 - 1.FeatureLevel,2. 4xMSAA 质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035897/

相关文章:

c++ - 编译 DirectX11 着色器文件

C++ 相当于 Python difference_update?

C++类构造函数和istream运算符>>

c++ - 使用 boost::serialization 时如何刷新文件缓冲区?

sql-server - vb形式如何自动递增

c++ - DirectX 11 调试层捕获错误字符串

directx - 加载/存储到 XMFLOAT4 比使用 XMVECTOR 更快?

c++ - 分布式算法编程的帮助库?

webdeploy - 升级到 VS 2012 后 Web 部署失败

c++ - 如何通知调试器运行时链接的 DLL 文件的位置?