FPS 游戏实现D3D透视

北城以北 提交于 2019-12-01 07:49:48

FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视,本教程将学习D3D透视的实现原理,并编通过DLL注入的方式实现透视。

Direct3D 透视是一种主流的透视方式,因为现如今大部分游戏都会使用Dx9图形接口,那么我们该如何实现D3D透视? 在D3D中普遍会使用深度缓存区(Depth Buffer)来进行消隐处理,通过使用Z轴深度缓存即可实现将人物实体被遮挡的部分不被显示出来,而我们的目的就是要让它强制显示出来,D3D的核心功能主要集成在COM组件中,只要Hook其中EndScence(), DrawPrimitive(),DrawIndexedPrimitive()函数就可以感知绘图操作,然后通过调用SetRenderState()渲染函数,改变其中的渲染参数即可实现不同的透视效果.

如上概述可知:我们需要找到 DrawIndexedPrimitive 这个渲染函数并 hook 这个函数即可实现透视,但需要注意,该函数与普通的API函数不一样,由于DirectX的功能都是以COM组件的形式提供的类函数,所以普通的Hook无法搞它,我这里直接找到了函数地址直接hook,或者你也可以使用Detour库,利用Detour也可以HOOK COM对象里的函数。

未完待续。。。。。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!