#include "stdafx.h"
HMODULE g_module = 0; //当前模块的句柄
ULONG_PTR g_ulNewAddress = 0; //DrawIndexedPrimitive函数地址
UINT g_nStride = 0; //需要透视的人物标识
__declspec(naked) HRESULT WINAPI OriginalDrawIndexedPrimitive(
LPDIRECT3DDEVICE9 m_pDevice,
D3DPRIMITIVETYPE type,
INT BaseVertexIndex,
UINT MinVertexIndex,
UINT NumVertices,
UINT startIndex,
UINT primCount)
{
__asm
{
//前面这5个字节是调试获取的
mov edi, edi
push ebp
mov ebp, esp
//跳转去原始的DrawIndexedPrimitive函数
mov eax, g_ulNewAddress
jmp eax
}
}
HRESULT WINAPI HookDrawIndexedPrimitive(
LPDIRECT3DDEVICE9 pDevice,
D3DPRIMITIVETYPE type,
INT BaseVertexIndex,
UINT MinVertexIndex,
UINT NumVertices,
UINT startIndex,
UINT primCount)
{
IDirect3DVertexBuffer9* pStreamData = nullptr;
UINT nOffsetInBytes = 0, nStride = 0;
if (pDevice->GetStreamSource(0, &pStreamData, &nOffsetInBytes, &nStride) == D3D_OK)
pStreamData->Releas
对d3d9里面的函数挂钩实现透视
最新推荐文章于 2024-07-23 11:32:42 发布
这篇博客探讨了如何利用hook技术针对d3d9的函数进行修改,以实现透视效果。虽然未经过实际游戏测试,但作者通过创建小型演示程序验证了其可行性。
摘要由CSDN通过智能技术生成