
Сообщение от
Ricardozx
А, я понял что ты имел ввиду.
Там есть 2 варианта либо зацикливать поток на проверку поля с моделайди либо хукать процедуру которая редактирует это поле. Первый вариант конечно проще но он и дороже в плане производительности + может разные проблемы вызывать связанные с многопоточностью когда например 1 поток пишет значение, и в этот момент второй поток выполняет проверку, видит что значение изменилось, и перезаписывает на свое, при этом первый поток еще не закончил запись, в итоге получается каша. Как по мне если пилить морфер то только вторым вариантом, думал ты нашел нужную процедуру.
Все проще: чтобы вызывать функции "чужой программы" нужно чтобы они вызывались из главного потока. Главный поток у игр определяется просто - это основной цикл игры, который выглядит примерно так:
Код:
while(game->isRunning()) {
game->HandleEvents();
game->Update();
game->Draw();
}
где в game->Draw() самым последним вызовом при отрисовке будет swap буферов. Именно поэтому и перехватывается DirectX9::Present.
Т.е. мы можем продолжить "игровую логику", а так же рисовать что угодно. В том числе можем прикрутить свой ENB под WoW, если уж совсем захочется...