我在管理環境中運行directX應用程序(C++)時遇到了一個問題。我試圖編寫一個MDI工具(用C#),其中父窗口的背景將是directX(C++)的嵌入式渲染窗口。將非託管directX嵌入到C#表格
我已經閱讀了將C++寫入本地dll的方法,但是最好能夠將C++項目包含在解決方案中(我甚至不知道這是否可行)。無論如何,如果你知道一些有用的步驟,提示,或者如果這是一個不好的主意,請讓我知道。謝謝!
我在管理環境中運行directX應用程序(C++)時遇到了一個問題。我試圖編寫一個MDI工具(用C#),其中父窗口的背景將是directX(C++)的嵌入式渲染窗口。將非託管directX嵌入到C#表格
我已經閱讀了將C++寫入本地dll的方法,但是最好能夠將C++項目包含在解決方案中(我甚至不知道這是否可行)。無論如何,如果你知道一些有用的步驟,提示,或者如果這是一個不好的主意,請讓我知道。謝謝!
最簡單的方法是將C++/CLI項目添加到解決方案中。這將使您能夠直接使用DirectX COM接口並創建一個託管包裝器,這很容易從您的C#代碼調用。我已經採取了這種方法幾次,這是迄今爲止我嘗試過的混合DirectX和.Net最簡單的方法。受管理的DirectX曾經是一個選項,但它不再被支持,它仍然是整個COM API的一小部分。
首先將C++部分寫入不同的dll文件並不意味着它不能與C#項目處於同一解決方案。
爲了使用本機DX在託管窗口上呈現,您需要將HWND窗口標識(使用form.WindowId.ToInt32)傳遞給C++ D3Ddevice c'tor。之後,每次使用該設備進行渲染時,它都會在.NET窗口上渲染。
要做到這一點,你可能需要兩個分離的項目 - 一個C++ dll & .NET項目。使用COM包裝器或p-invoke將HWND傳遞給C++ dll。