Я ищу для реализации видеопроигрывателя в игровом движке, эффективно декодируя видеофайл и передавая результат текстуре в DirectX 11. К сожалению, я немного не знаю, как это сделать, но Я нашел класс ID3D11VideoDevice в MSDN, но понятия не имею, как его использовать, и я не могу найти полезные примеры/примеры в Интернете, которые показывают, как он используется.DirectX 11 Воспроизведение видео
Я начал, пытаясь запросить интерфейс ой мой созданный 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);
Спасибо заранее.
Видеоинтерфейсы Direct3D 11 чрезвычайно низкоуровневые, поэтому их использование непосредственно для воспроизведения носителей не рекомендуется. Вместо этого вы должны посмотреть на использование Media Foundation или стороннего видео решения. –
Какую версию Windows вы настраиваете здесь? Windows 10, Windows 8.x, Windows 7? –
@ChuckWalbourn Извините, что он нацелен на Windows 7 с помощью Visual Studio 2013, не является ли Media Foundation столь же низким уровнем? Использование декодеров, потоков и т. Д.? Насколько я понимаю, WMF был частью низкого уровня, а использование DirectX для рендеринга результата для текстуры было частью более высокого уровня? – TheRarebit