Привет всем, я возиться с некоторыми DLL инъекций вещи. Поэтому я скачал простой пример приложения Direct3D 9 (он показывает только куб), которым я хочу манипулировать.
Мне уже удалось подключить функции EndScene и Reset этого приложения, и теперь я просто хочу добавить больше света к текущему нарисованному кадру.
Вот моя функция EndScene:
HRESULT WINAPI myEndScene(LPDIRECT3DDEVICE9 pDevice) {
lightHackTest2(pDevice);
auto ret = origEndScene(pDevice);
placeHooks();
return ret;
}
и вот моя функция lightHackTest2:
void lightHackTest2(LPDIRECT3DDEVICE9 pDevice) {
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(100, 100, 100));
}
void lightHackTest(LPDIRECT3DDEVICE9 pDevice) {
D3DLIGHT9 light;
ZeroMemory(&light, sizeof(light));
light.Type = D3DLIGHT_DIRECTIONAL;
light.Diffuse.r = 0.5f;
light.Diffuse.g = 0.5f;
light.Diffuse.b = 0.5f;
light.Diffuse.a = 1.0f;
light.Direction.x = -1.0f;
light.Direction.y = -0.5f;
light.Direction.z = -1.0f;
pDevice->SetLight(0, &light);
pDevice->LightEnable(0, TRUE);
}
Эти функции на самом деле вызываются (проверяется с помощью некоторых MessageBoxes), но все остается на месте.
Я неправильно применяю свет?
Задача ещё не решена.
Других решений пока нет …