2010-09-07 71 views
1

在開發遊戲中的疊加層(類似於Steam所做的)中提到的一些小信息提到必須攔截調用圖形API的幀交換函數,並將自己的繪圖例程掛鉤在其中。用於遊戲內覆蓋的SDK

這似乎是什麼Mumble(遊戲VoIP)正在做。由於我從來沒有做過任何涉及鉤子的事情,並且由於我對DirectX沒有多少經驗,所以我想知道是否存在某種類型的SDK,或者甚至只是一個比可以實現輸入的Mumble更易讀的示例,演示如何實現交互式遊戲內覆蓋。嘟is很棒,但我似乎無法把頭圍繞在它周圍,尤其是爲了正確掛鉤它而做的更有趣的事情。

此外,如果您有關於如何做到這一點在Mac和Linux的詳細信息... :-)

回答

1
  • 開始由不攔截圖形API設計你覆蓋。請記住,鍵輸入必須使用全局鉤子。
  • 使用Direct3D攔截器dll將它集成到應用程序中。谷歌它來檢索一個基本代碼。

編輯:

+0

保健佳品特定鏈接? 「Direct3D攔截器DLL」不會通過Google返回任何明智的結果。 – 2010-09-08 09:47:21

+0

放置在應用程序文件夾中的代理/攔截器DLL並不是我正在尋找的,因爲我希望能夠影響在該機器上啓動的任何遊戲。看起來像這個問題可能包含我正在尋找的答案:http://stackoverflow.com/questions/1994676/hooking-directx-endscene-from-an-injected-dll – 2010-09-12 14:31:15

1

也許GLIntercept可以給你一些啓發。 它提供了一個openGL.dll文件,您可以將它放在應用程序的文件夾中。 Windows根據優先級規則加載此dll而不是system32的dll。 GLIntercept將所有調用轉發給system32的dll,但同時記錄它們。 所以,你可以實現你自己的glSwapBuffers(),它可以呈現更多的東西,然後轉發呼叫。

源代碼也可用。

我給予好評你的問題,我感興趣的是你將來的發現......隨意轉貼,當你有更多的信息:)

+0

謝謝:-)不幸的是,GLintercept(和等效DX的方法),你描述他們不是我要找的;我想將這些功能注入任何啓動的遊戲中。這就是說,它看起來像這個相關的問題(由StackOverflow建議):http://stackoverflow.com/questions/1994676/hooking-directx-endscene-from-an-injected-dll似乎包含答案。 – 2010-09-12 14:27:55