首頁>Program>source

我希望我的程式能够啟動任何windows遊戲,並且在使用者玩遊戲時,在遊戲視窗的某些部分中間歇地顯示一些文字或圖片.遊戲可能處於視窗模式或全屏模式.根据我从線上資源中發現的資訊,可以使用支援叠加的圖形庫以及使用windows Hooks跟蹤目標應用程式的視窗来完成此操作.在這種情况下,我有一些疑問.

  1. 覆盖層会影响遊戲的效能吗?
  2. 钩掛應用程式將如何影响效能?
  3. 還有其他方法可以實現這一目標吗? 例如,您如何认為 PIX , DirectX除錯和分析工具,可以工作吗?
最新回復
  • 11天前
    1 #

    Fraps是从第三方應用程式對全屏DirectX應用程式執行此類操作的典型示例.它通過掛接一些系統呼叫並將其自身插入應用程式和DirectX之間的呼叫鏈中来工作.会有一些效能上的影响,但总的来說影响很小。

    此頁面似乎包含一些有關如何以這種方式掛接應用程式的详细資訊和示例代碼。

    如果我没記錯的话,在其他論坛讨論中(目前找不到鏈接。搜尋诸如" fraps如何工作"之類的問题,這是一个很受欢迎的問题),Fraps会通過一些方法来迫使该應用 載入其DLL,然後在呼叫實際的Present()之前掛接Present()呼叫並執行device->Clear()呼叫,並帶有設置為不同颜色的小矩形列表,這些小矩形可以設置其FPS編號 顯示.這對效能的影响最小,並且与應用程式正在執行的任何渲染廣泛相容.叠加位圖会更加複雜,因為在当前階段這樣做並不容易.也许如果您可以钩住EndScene,則可以做更多的事情,但是必须註意不要更改設備狀態。

    PIX拥有對DirectX驅動程式的訪問權限,所以我不希望能够將其用作模擬模型。

    如果目標應用程式正在視窗模式下執行,則掛钩DirectX仍然有效,但是您也可以只使用GDI。

    Edit: 我认為這是我最初想到的鏈接。

  • string:在Java中用定界符連線值列表的最優雅方法是什麼?
  • 在PHP中讀取PDF元資料