我希望在游戏引擎中实现一个视频播放器,有效地解码视频文件,并在DirectX 11中将结果呈现为纹理。不幸的是,我对如何做到这一点有点无知,但我已经在MSDN上找到了ID3D11VideoDevice类,但我不知道如何使用它,而且我似乎无法在网上找到任何有用的示例/示例,说明如何使用它。
首先,我尝试使用以下代码查询这个接口(我创建的ID3D11Device ):
ComPtr<ID3D11VideoDevice> video;
HRESULT hr = device->QueryInterface(__uuidof(ID3D11VideoDevice), &video);但是我得到了HRESULT的E_NOINTERFACE,所以我猜我已经创建了原始的设备,以至于我不能将它转换成视频设备?无论是这样还是这样做都是完全错误的。所以我的问题是:
下面是我创建原始ID3D11Device的方式,仅供参考:
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);提前谢谢。
https://stackoverflow.com/questions/37326426
复制相似问题