我想通过使用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