代码之家  ›  专栏  ›  技术社区  ›  Game_Overture

将非托管directX嵌入C#表单

  •  2
  • Game_Overture  · 技术社区  · 16 年前

    我得到了一个关于在托管环境中运行directX应用程序(C++)的快速问题。我正在尝试编写一个MDI工具(用C#),其中父窗口的背景将是directX(C++)的嵌入式渲染窗口。

    我已经阅读过一些方法,包括将C++写入到本地DLL中,但是最好是将C++项目包含在解决方案中(我甚至不知道这是否可能)。无论如何,如果你知道一些有用的步骤,提示,或者如果这是一个坏主意,请让我知道。谢谢

    3 回复  |  直到 16 年前
        1
  •  3
  •   Stu Mackellar    16 年前

        2
  •  1
  •   Dror Helper    16 年前

    首先,在一个不同的DLL文件中编写C++部分并不意味着它不能与C语言项目相同的解决方案。

    为了在托管窗口上使用NED DX呈现,您需要将HWND窗口ID(使用表单.WistWid .toIt32)传递给C++ D3DPosier-Cor。之后,每次使用该设备进行渲染时,它都会在.NET窗口上进行渲染。

    要做到这一点,你可能需要两个SARAPATE项目——一个C++ DLL和。NET项目。使用COM包装器或P调用将HWND传递给C++ DLL。

        3
  •  1
  •   faulty    16 年前

    如果您不想花费太多时间编写DirectX的C++代码,可以考虑使用 SlimDX ,因为托管DirectX 1.0是不可能的,as 2.0从未离开测试版,后来被XNA取代,XNA与DirectX本身有很大不同,需要您安装XNA Game Studio

    SlimDX 是托管directx的开源版本,API和内部结构略有不同,但使用起来很简单。最近发布的版本非常稳定。我目前正在使用它来编写一个生产应用程序。

    SlimDX

    Managed DirectX