#c #debugging #opengl #memory #detours
Вопрос:
Я подключаю wglSwapBuffers(рабочие) и glReadPixels, вызываю код в wglSwapBuffers:
unsigned char pixels[1 * 1 * 4] = { 0 }; glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
затем приложение выходит из строя, как это можно подключить, чтобы изменить пиксели?
Ошибка в отладчике:
0 0 1 1 0x19FB14 Exception thrown at 0x0019FB14 in game.exe: 0xC0000005: Access violation writing location 0x00000006.
мой крюк для объезда:
void hkglReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) { Log("%i %i %i %i 0x%Xn", x, y, width, height, pixels); ((glReadPixels_t)oglReadPixels)(x, y, width, height, format, type, pixels); }
Комментарии:
1. Вы уверены, что крючок работает правильно? Совершенно бессмысленно, что
pixels
это тот же адрес, что и кодовый адрес, с которого генерируется исключение.