我希望在游戏引擎中实现视频播放器,有效地解码视频文件并将结果呈现为DirectX 11中的纹理。不幸的是,我对如何做到这一点毫无头绪但我和#39;在MSDN上找到了ID3D11VideoDevice类,但不知道如何使用它,我似乎无法在网上找到任何有用的示例/示例,说明它是如何使用的。
我已经尝试使用以下代码查询界面哦我创建的ID3D11Device:
ComPtr<ID3D11VideoDevice> video;
HRESULT hr = device->QueryInterface(__uuidof(ID3D11VideoDevice), &video);
但是我得到了HRESULT E_NOINTERFACE,所以我猜测我是否已经创建了原始设备,以至于无法将其转换为视频设备?无论是那个还是这个都是完全错误的方式。所以我的问题是:
以下仅供参考,我是如何创建原始ID3D11设备的:
std::vector<D3D_FEATURE_LEVEL> feature_levels = {
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
D3D_FEATURE_LEVEL_9_3,
D3D_FEATURE_LEVEL_9_2,
D3D_FEATURE_LEVEL_9_1
};
UINT flags = 0;
#if defined(DEBUG) || defined(_DEBUG)
flags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
// Create D3D device
HRESULT hr = D3D11CreateDevice(nullptr,
D3D_DRIVER_TYPE_HARDWARE,
0,
flags,
&feature_levels[0],
feature_levels.size(),
D3D11_SDK_VERSION,
&m_device,
&m_featureLevel,
&m_deviceContext);
提前致谢。
答案 0 :(得分:2)
评论中提到您使用的是Windows 7,这就是您没有Direct3D 11视频支持的原因。
DirectX 11.1运行时可以通过development version安装在Windows 7 Service Pack 1上,但它仅按KB2670838提供软件功能。任何需要新硬件功能的功能都需要新的MSDN驱动程序,这些驱动程序仅在Windows 8.0或更高版本上受支持。