易语言D3D HOOK写屏 解决了给500.

易语言D3D HOOK写屏 解决了给500.,第1张

版本 2

支持库 spec

支持库 ogrelib

子程序 HOOK_安装

集_Direct3DCreate9 = GetProcAddress (GetModuleHandleA (“d3d9dll”), “Direct3DCreate9”)

如果真 (D3DxHook安装ApiHook (集_Direct3DCreate9, 到整数 (&NewDirect3DCreate9)))

D3DxHook开始Hook ()

如果真结束

子程序 NewDirect3DCreate9, 整数型, , No1

参数 SDKVersion, 整数型

局部变量 返回值, 整数型

局部变量 CreateDevice地址, 整数型

D3DxHook停止Hook ()

返回值 = Jmp (集_Direct3DCreate9, SDKVersion)

集_CreateDeviceAdd = 取_类_函数地址 (返回值, 17)

HOOKCreateDevice安装ApiHook (集_CreateDeviceAdd, 到整数 (&NewCreateDevice))

HOOKCreateDevice开始Hook ()

D3DxHook开始Hook ()

返回 (返回值)

子程序 NewCreateDevice, 整数型, , 返回值为设备对象

参数 pDx9, 整数型

参数 Adapter, 整数型

参数 DeviceType, 整数型

参数 hFocusWindow, 整数型

参数 BehaviorFlags, 整数型

参数 pPresentsentationParameters, 整数型

参数 pPresentturnedDeviceInterface, 整数型

局部变量 返回值, 整数型

局部变量 Present地址, 整数型

局部变量 pFunAddress, 整数型

局部变量 参数, 整数型, , "1"

局部变量 局_pPresentturnedDeviceInterface, 整数型

HOOKCreateDevice停止Hook ()

返回值 = Jmp (集_CreateDeviceAdd, pDx9, Adapter, DeviceType, hFocusWindow, BehaviorFlags, pPresentsentationParameters, pPresentturnedDeviceInterface)

局_pPresentturnedDeviceInterface = 取指针内容_整数 (pPresentturnedDeviceInterface)

EndScene = 取_类_函数地址 (局_pPresentturnedDeviceInterface, 168) ' 读_DWORD (汇编加法 (读_DWORD (局_pPresentturnedDeviceInterface), 169))

' 调试输出 (十到十六 (EndScene))

集_Present = 取_类_函数地址 (局_pPresentturnedDeviceInterface, 18) ' 取_Presen地址 (返回值) '

集_Reset = 取_类_函数地址 (局_pPresentturnedDeviceInterface, 17)

集_Reset跳回地址 = ASM_ADD (集_Reset, 5)

_HookJmp (集_Reset, &NewReset)

HOOKPresent安装ApiHook (集_Present, 到整数 (&NewPresent))

HOOKPresent开始Hook ()

HOOKCreateDevice开始Hook ()

返回 (返回值)

子程序 NewPresent, 整数型, , No3

参数 pDxdevice, 整数型, , 8

参数 pSourceRect, 整数型, , c

参数 pDestRect, 整数型, , 10

参数 hDestWindowOverride, 整数型, , 14

参数 pDirtyRegion, 整数型, , 18

局部变量 返回值, 整数型

局部变量 设备, 整数型

HOOKPresent停止Hook ()

调试输出 (pDxdevice)

如果真 (D3D_是否创建 = 假)

D3DCreateFontA (pDxdevice, 12, 6, 400, 0, 0, 1, 7, 0, 0, “宋体”, 集_字体)

D3D_是否创建 = 真

如果真结束

__DrawMyTextEx (“[欢迎使用菊花科技]”, 10, 10, 合成颜色 (255, 255, 255, 255))

返回值 = Jmp (集_Present, pDxdevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion)

HOOKPresent开始Hook ()

返回 (返回值)

d3d和gdi的区别有:

1、D3D和GDI性能最大的差别在于使用GPU还是CPU来计算数据并输出绘制。d3d是GPU所以性能更好。

2、GDI是图形设备接口的英文缩写,主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形和图像输出。D3D的作用在于只需要调用D3D提供的接口函数和功能就能实现显示功能,通过分工合作,极大的降低了软件开发周期和成本。

名气很大的一款游戏窗口化工具,

如果出现“钩住用dll不存在”的提示

选中程序然后右击按设置

然后在d出的对话框里点“辅助DLL” 右边框框右边的“打开”按钮,如图:

选D3Dwindower根目录下的D3dHookdll 然后再运行游戏应该就行了。

还有有些游戏不能全屏的话,把“一般”选项里的“非活动时缩小窗口”钩上,基本就可以了~

但是这个软件支持的游戏有限~ 很多都不能执行~~~这也是没办法的,只能盼它出新版本或者换其它的了~

具体的步骤如下:

第一步:添加要运行游戏的可执行程序

在该软件的主界面上点击按钮来添加希望使用该工具窗口 化运行的程序,在d出对话框中选择游戏的可执行程序

在选择好游戏可执行程序之后,回到 D3DWindower 的主界面,发现在 D3DWindower 的主界面的列表上面就出现了该游戏的执行程序图标

第二步:让D3DWindower钩住游戏的可执行程序

D3DWindower的原理是构建一个虚拟的显示器,让游戏运行在这个显示器中,当然,在让全屏游戏在D3DWindower中运行前,必须先让它认识并熟悉该游戏。这儿叫做“钩住”游戏。使用 D3DWindower 的钩子函数 钩住可执行程序的方法如下:(其他游戏相同)

首先在D3DWindower的列表中选游戏可执行程序,然后点击蓝色箭头按钮

第三步:运行游戏的可执行程序

选中D3DWindower列表中的仙剑奇侠传3的可执行程序,然后点击工具栏上面的电脑按钮就可以在窗口下执行游戏了。

D3DWindower天空软件站下载地址:http://wwwskycncom/soft/22885html

D3DWindower华军软件站下载地址:http://wwwonlinedownnet/soft/39421htm

附:D3D其他功能介绍

其实,这款软件的功能不仅仅是上文中所介绍的。在选中列表中的可执行程序后还可以通过点击工具栏上面的按钮 对运行仙剑奇侠传3的那个窗口进行更高级的设置。在“设置”对话框中,它分为了四个子界面:“一般”设置界面,“窗口化”设置界面,“最上方管理”设置界面和“输入设备”设置界面。

(1)“一般”设置界面

图6:“一般”设置界面

在该界面中可以设置该窗口是否采用固定的宽度和高度(填入的数字代表像素数,如800600),这样,窗口的大小就不会随着游戏的分辨率的改变而改变了,将“固定宽度”和“固定高度”设置成 0 便可以设置不使用固定的窗口大小了。

“窗口化”复选框可以用来设置在 D3DWindower 中运行游戏是使用全屏还是窗口。

“显示 FPS ”复选框可以用来设置在窗口方式下运行游戏时是否显示当前每秒的帧数。

“非活动时降低优先级”复选框可以让游戏在没有处于活动状态下是否降低它的优先级。

“非活动时缩小窗口”复选框可以让游戏在没有处于活动状态下自动减小它的窗口,从而不会干扰的其他 *** 作。

(2)“窗口化”设置界面

此界面用来设置游戏画面的显示,如果大家对游戏显示出来的画面不满意,可以在这里进行详细设置。

(3)“最上方管理”设置界面

在该界面中,可以设置是否将游戏窗口置于桌面的最前方,这样就算在干其他工作,也不会影响看到游戏的整个概貌了。

如果选择了“最上方管理”复选框,可以选择最上方管理的高级设置:是否“钩住 GetActiveWindow”函数,是否“钩住GetForegroundWindow”函数以及是否“固定窗口坐标”。

(4)“输入设备”设置的界面

如果大家发现在一些游戏中的鼠标输入有一些问题的话,就可以在这个界面上进行设置了。

注意:该软件还有一些 bug ,对大部分的游戏都需要进行一些有针对性的详细设置,而且它对一部分的游戏支持也不是很好。希望新版本出现后能够解决这些问题。还有一点需注意就是玩网络游戏使用该软件的话有可能被封号~!

D3D (Direct3D):

  这是微软为提高3D 游戏在Win 95/98中的显示性能而开发的显示程序。这个基于显示光栅加速引擎非常强大和复杂,它在显示满屏状态,提供多边形计算、贴图场景等优化能力。

  由于其只能在满屏提供优化能力,所以在3DS MAX中你只能在最大化显示视角时(如最大化显示TOP、RIGHT、LEFT和PERSPECTIVE视角),才能获得加速能力。同时,Direct3D不支持windows NT系统。

  3DS MAX只支持50以上的DirectX,Direct 3D只支持光栅级函数调用,Direct 3D常得到廉价的显示卡支持,支持场景数据优化、加速贴图显示(需得到显示卡的支持),场景透视修正。

  Direct 3D工作在高位显示模式,在这些显示模式下,它可达到一个显示质量和内存占用的平衡点。缺点是,只能工作在Win95/98下,不能工作在Windows NT下,只支持高位颜色显示模式,两个显示通道显示相对较慢,由于Direct 3D分配显示内存的方式问题,在极大化/极小化窗口时会出现显示混乱问题。由于Direct 3D对3DS MAX支持不足,显示速度虽然快于HEIDI,但在3DS MAX并不适用。

  OpenGL:

  是OpenGraphicsLib的缩写,是一套三维图形处理库,也是该领域的工业标准。计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术。

  OpenGL是SGI公司开发应用于不同 *** 作系统的三维应用软件,支持Windows95/98、WindowsNT等系统。3DS MAX使用完整的OpenGL内部函数,包括几何转化、灯光、贴图、数据剪切、场景重绘。如果显示卡支持这些函数,3DS MAX可完全使用,OpenGL是多线程程序,可支持双处理器系统。3DS MAX中的所有三维物体都基于OpenGL函数,通过这些函数进行几何和光栅转换。

  但现在出现了有趣的现象:不是所有支持OpenGL加速的显卡都支持OpenGL内部函数。这意味着在进行三维物体转换时,不能确定CPU是否同时参与进行转换计算。现在部分这种显卡只支持部分OpenGL函数,其它只能依靠CPU进行计算,加重了CPU的计算负担。

  为何这些显卡只支持部分OpenGL函数?其中一个原因是:电脑游戏只需要这部分OpenGL函数;而另一个原因是,分离几何转换和光栅转换有利于使显示速度提高,把复杂的几何转换交给CPU计算大大快于显示芯片计算。最后你需懂得MCD(简化版OpenGL)和ICD(完全版OpenGL)的区别:

  前者是在3Dfx Voodoo 系列显卡中使用,为Quake 或 Unreal等游戏的显示引擎;后者是在ATI RAGE TNT/TNT2、permeida 2/3等系列显卡中使用,通常在这些显卡说明书中标称为OpenGL ICD。

  3DS MAX硬件加速要求:完整的硬件光栅加速,OpenGL ICD,优良的几何硬件加速引擎。但它也非完美,由于三维场景数据都必须通过此驱动程序驱动,可能造成数据传输总线瓶颈现象。由于OpenGL广泛使用于不同 *** 作系统,虽然这是它的优点,但也是其缺点,为了保证各个系统显示的共同性,可能造成场景显示的错误。

  如:灯光和贴图的显示限制,你可能注意到3DSMAX场景使用显示中贴图和灯光的紊乱现象(在灯光不强和无贴图校正时,尤其明显)。

  OpenGL支持16位以上真彩色显示,不支持8位彩色显示。OpenGL只能支持场景中最多8盏灯光的显示效果。

  线框物体不支持背面选择,所以不支持变边多边形。场景中物体表面纹理层叠自动关闭自发光效应,非层叠纹理将显得非常明亮,这有助于提高显示速度。由于在OpenGL设计时未对场景重绘进行优化,3DS MAX场景重绘时比使用HEIDI驱动慢,通常在场景中移动物体会出现显示下降的现象。

  虽然OpenGL在显示时同样存在问题,但其已成为三维图形软件的标准,在显示速度上也有一定优势,在使用3DS MAX时通常使用此种显示方式(当然专业显卡除外)。

tex 系列函数得到的返回值是 a32fr32fg32fb32f 的 value,看起来楼主的原始纹理格式应该是 r32f 格式才对,所以,需要创建正确的纹理格式先,就是使用 DXGI_FORMAT_R32_FLOAT 来创建纹理,得到的 value 里的 arg 通道都将是 00f。

桌面上点右键,属性,设置,高级,疑难问题,硬件加速,把滑块拖到最后。

这样DXDAG里面的那个灰的就能点了

3D加速卡就是硬件,也就是我们常说的显卡。

而 *** 作系统和应用软件通常不能直接去使用显卡和其中的3D加速功能,必须通过系统中的一个接口去调用,这就是OPENGL和D3D的作用了。

OPENGL和D3D对下可以通过显卡驱动程序 *** 作显卡,对上可以为 *** 作系统和各种应用程序提供各种显示用的接口函数和显示功能。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12184884.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存