禁用蒸汽覆盖

c-s*_*ile 10 c++ windows game-engine steam

我有以下游戏设置:

  1. launcher.exe - 在Windows上的Steam下启动,并为用户提供一些设置UI.
  2. 然后launcher.exe启动实际的game.exe.

问题是launcher.exe正在使用H/W加速UI - 使用Direct2D/DirectX.

此页面https://partner.steamgames.com/doc/features/overlay说明:

你的游戏不需要做任何特殊的覆盖工作,它会自动挂钩到Steam推出的任何游戏!

但在我的情况下会产生问题 - 叠加是在错误的窗口上创建的.因此launcher.exe(使用DirectX)具有覆盖,但是由game.exe(真实游戏,使用DirectX和/或OpenGL)创建的窗口不是.

问题是:如何修改launcher.exe窗口的代码以防止"自动"在其上创建Steam覆盖?

更新,Valve的TS回应:

抱歉,没有代码可以有选择地启用或禁用启动器和游戏之间的叠加!

唯一的"选项"是在launcher.exe中禁用DirectX绘图.在这种情况下,他们注入的DLL不会创建那个东西.但这实际上意味着在Steam下没有GPU加速的UI绘图......有点"640kb足以满足所有人"的设计类型.

理想情况下,Steam应该向窗口发送一些自定义消息,以询问窗口希望如何以及在何处呈现该叠加层.但显然没有这样的东西,或者是它?

仅针对上下文,启动器看起来像这样:

如你所见,没有叠加空间