簡體   English   中英

如何在directshow中疊加direct3d

[英]How to overlay direct3d in directshow

我正在尋找有關如何在directshow中將direct3d疊加在視頻(網絡攝像頭)源上的教程或文檔。

我想提供一個虛擬網絡攝像頭(一個看起來像系統的網絡攝像頭的虛擬設備(即,以便在像IM視頻聊天那樣使用普通網絡攝像頭的地方使用它)

我想從連接到計算機的網絡攝像頭捕獲視頻。 我想在視頻源上疊加一個三維模型,並將其作為輸出提供。

我曾計划在directshow中這樣做,因為它看起來可能會在其中執行此操作。 如果您對可能的替代方案有任何想法,我會全力以赴。

我正在使用visual studio 2008編寫c ++。

使用視頻混合渲染器濾鏡將視頻渲染為紋理,然后將其作為全屏四邊形渲染到場景中。 之后,您可以將其余的3D內容渲染到頂部,然后呈現場景。

您是否正在使用位於圖表中某處的過濾器,該過濾器會在視頻中呈現D3D內容?

如果是這樣,那么您需要查看從CTransformFilter派生過濾器。 像EZRGB這樣的例子會給你一些工作。 基本上,一旦您對此進行了排序,您的過濾器需要執行Direct 3D渲染,並且實際上將生成的圖像插入到直接顯示流中。 唉,你不能直接將Direct3D渲染到直接顯示視頻幀,因此你必須進行渲染,然后鎖定前/后緩沖區並將3D數據復制到直接顯示流中。 這不是理想的,因為它會很慢(與標准的D3D渲染相比),但據我所知,它是你能做的最好的。

編輯:根據您的更新,您想要的是非常復雜的。 您需要創建一個源過濾器(您應該查看CPushSource示例)。 完成后,您需要將其注冊為視頻捕獲源。 基本上,您需要通過在DLLRegisterServer函數中使用IFilterMapper2 :: RegisterFilter調用並傳入類ID“CLSID_VideoInputDeviceCategory”來完成此操作。 添加Direct3D將如上所述。

你需要花費盡可能多的時間來閱讀Windows SDK中的DirectShow示例並開始修改它們以執行您希望它們執行的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM