我想通過使用LD_PRELOAD方法捕獲來自我的遊戲的圖像,通過提供我自己的庫文件來攔截OpenGL調用。此方法對於簡單的演示OpenGL代碼非常有用(請參閱this project's文件demo.cpp,make.sh,load.sh),但對於我認爲使用OpenGL的FPS遊戲UrbanTerror不起作用。我自己提供的函數gettimeofday被正確調用,但是我的glXSwapBuffers不是,出於某種原因。這些遊戲是否以不同方式使用OpenGL?如果是這樣,怎麼樣?歡迎任何關於如何掛鉤UrT和/或其他FPS遊戲的提示。我在Ubuntu 11FPS遊戲和OpenGL
3
A
回答
6
AFAIK的的Quake3引擎(用於城市恐怖)實現自定義動態OpenGL的裝載系統,即二進制不針對libGL函數鏈接.so直接使用dlopen
加載libGL.so,然後使用dlsym
檢索所有的OpenGL符號。爲避免與任何直接鏈接的代碼發生衝突,所有內部符號都以「名稱空間」作爲前綴。
然而,LD_PRELOAD
環境變量將不起作用。要掛鉤到動態加載的庫,你必須做一些主要的詭計。有幾種可能性。我還建議攔截dlopen
和dlsym
的調用,併爲你想要掛鉤的功能,返回你的蹦牀(它將最終調用所請求的函數),而不是直接返回函數指針。
順便說一句:現在你問這個問題很好,因爲我正在編寫一個類似的預加載libGL.so
作爲對我正在編寫的窗口合成器的支持;我可能陷入同樣的陷阱。
相關問題
- 1. OpenGL - 簡單的3D遊戲低FPS
- 2. 如何讓遊戲的FPS(使用OpenGL)達到800 FPS
- 3. 遊戲計算FPS
- 4. 如何創建FPS遊戲?
- 5. android opengl遊戲
- 6. 在opengl遊戲中爲iPhone計算FPS(EAGLView)
- 7. 在android平板上提高60以上的opengl \遊戲fps
- 8. iPhone Opengl遊戲與廣告== FPS的問題?
- 9. 如何加快我的遊戲fps?
- 10. 非遊戲iPhone應用有多少FPS?
- 11. 使用Angular進行遊戲(60 fps)
- 12. C#GDI遊戲循環(FPS計數器)
- 13. 具有恆定FPS的Android遊戲?
- 14. Android studio 2d遊戲fps問題
- 15. 更改Sprite-Kit遊戲的FPS?
- 16. 我的遊戲中的FPS Counter(Java)
- 17. 用於遊戲開發的Qt和OpenGL
- 18. OpenGL和遊戲開發資源
- 19. FPS下降和遊戲變慢 - Sprite-Kit和Swift
- 20. 的OpenGL遊戲程序
- 21. C++ OpenGL遊戲計時器
- 22. 2D非OpenGL的遊戲:ViewControllers
- 23. Objective-C OpenGL遊戲教程
- 24. OpenGL 2d示例遊戲
- 25. 對OpenGL遊戲主菜單
- 26. 在iPhone 2d openGl遊戲?
- 27. OpenGL的Unity遊戲資產
- 28. 遊戲遊戲和繼承
- 29. OpenGl ES,android FPS
- 30. iOS和SpriteKit - 重新啓動遊戲後的低fps
Urban Terror是開源遊戲。所以,你可以看到並調試它的源代碼。 – frp
http://ftp.snt.utwente.nl/pub/games/urbanterror/iourbanterror/source/complete/ – user423805