我想要做的是让 Windows 应用程序启动另一个 Direct3D 应用程序,并将 Direct3D 应用程序呈现到父进程提供的控件中。
这甚至可能吗?如果是,它会怎么做?
它可以轻松完成,您只需在创建 D3DDevice 时将 HWND 窗口 id 作为参数传递。它甚至可以在互操作期间工作 - 您可以将 hWnd 从 .NET 传递到 C++ 并使用本机 directX 呈现 C# 窗口。
下面是一个示例,在现有 Win32 窗口中托管 WPF 窗口的内容。我在编写基于 WPF 的屏幕保护程序时这样做了,必须渲染到屏幕保护程序的小预览窗口中。
http://stuff.seans.com/2008/09/01/writing-a-screen-saver-in-wpf/
这个有可能。我记得在编写屏幕保护程序时在 VB6 中做过。屏幕保护程序控制面板使用预览窗口的 HWND 向屏幕保护程序发送命令行。使用该 HWND,您可以获取 HDC 并从那里获取您需要的所有其他内容。