2017-04-14 36 views
0

檢索ID2D1DeviceContext我使用的源讀取器來讀取視頻文件視頻樣本,並使用解碼器,然後我用渲染的DirectX9這些樣品解碼。從的IDirect3DDevice9

我使用IDirect3DDevice9渲染視頻幀,並將其按預期方式工作。

https://msdn.microsoft.com/en-us/library/windows/desktop/dn890715(v=vs.85).aspx

那麼,如何得到IDirect3DDevice9ID2D1DeviceContext然後添加Chorma鍵效果,然後渲染:

現在我想在色度鍵效果添加,一個在下面像描述視頻幀?

+0

Chromay鍵可以直接在使用的IDirect3DDevice9着色器來完成。如果你有興趣,我已經做了很好的結果。 – mofo77

回答

3

ID2D1DeviceContext需要的DirectX11設備並且不能與過時的IDirect3DDevice9使用。通常,按以下順序創建對象:DXGI工廠,D2D1工廠,D3D11設備,DXGI設備,D2D1設備,然後最終創建D2D1設備上下文。你可能想檢查D2D getting starting guide and samples

有在處理的DirectX9沒有真正的點了,除非你是被迫提供對Windows XP的向後兼容性。色度鍵樣本您發佈需要Windows 10

+0

所以你的意思是我需要使用DirectX11而不是DirectX9。目前我已經創建了使用DirectX9 API渲染視頻幀的示例代碼。所以我需要用DirectX11 API替換這個代碼。是否有任何示例代碼可以從視頻文件中讀取樣本,然後使用DirectX11 API顯示它們?基本上我想使用提供的示例將色度鍵效果應用於視頻流。 – User7723337

+0

是的,您需要使用DirectX11(或DirectX10)api。將代碼轉換爲ID3D11Texture2D中的存儲幀,然後從中提取IDXGISurface,然後從DXGI表面提取ID2D1Bitmap1,然後使用此D2D位圖作爲D2D圖形/濾鏡的渲染目標。一些示例代碼可以在我之前發佈的頁面上找到。 – VTT

0

所以,我怎麼得到IDirect3DDevice9ID2D1DeviceContext ...

你不能從另一個。這些接口屬於不同的API,如果您使用Media Foundation與Direct3D 9進行解碼,則Direct2D(其中ID2D1DeviceContext所屬)僅在那裏無法使用。

最接近您的請求是使用API​​之間的互操作性。有關介紹,請參閱Direct2D and Direct3D Interoperability Overview,並注意其中提到的Direct3D版本。

參見:Surface Sharing Between Windows Graphics APIs。下圖顯示了較新的API通過DXGI進行互操作,但不像Direct3D 9那麼古老。另請參閱下面的評論以獲取更新的MSDN鏈接。

+0

我需要在使用源讀取器讀取的視頻幀上添加色度鍵效果。我發現MS爲Chroma-Key提供的這些API,所以我試圖獲得'ID2D1DeviceContext'。所以如果我需要使用MS爲Chroma-Key證明的API,我需要遵循哪些方法。 – User7723337

+0

@Roman R.請注意,您發佈的圖片已經過時。 D2D可以和DX11一起使用(但是DX12還沒有)。 DXGI發展到版本1.5等... – VTT

+0

此外[MS媒體基礎可以使用DirectX11就好了](https://msdn.microsoft.com/en-us/library/windows/desktop/hh162912(v = vs.85)的.aspx)。 – VTT

相關問題