C++ Вопрос WglSwapBuffers и его мерцание с GL в Minecraft

Начинающий
Статус
Оффлайн
Регистрация
26 Май 2019
Сообщения
114
Реакции[?]
21
Поинты[?]
4K
Привет. Помогите пожалуйста. Хукаю через MinHook "wglSwapBuffers", и пытаюсь через gl отрендерить точки, но они начинают мерцать/моргать.
P.s. на Minecraft 1.6.4 оно хотя-бы отрисовывается хоть и с мерцанием, а на 1.14.4 оно вообще не рендерится.

Видео:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Пожалуйста, авторизуйтесь для просмотра ссылки.


#include "includes.h"

#pragma warning (disable : 4996)
using namespace std;

typedef BOOL(__stdcall* wglSwapBuffers_t) (HDC hDc);
typedef BOOL(__stdcall* T_SwapBuffers)(HDC);
T_SwapBuffers pSwapBuffers = nullptr;
static wglSwapBuffers_t o_wglSwapBuffers;

bool WallHack(IN HDC hDc) {

glPointSize(2);
glBegin(GL_POINTS);
glColor3d(1, 0, 0);
glVertex3d(-4.5, 4, 0); // первая точка
glColor3d(0, 1, 0);
glVertex3d(-4, 4, 0); // вторая точка
glColor3d(0, 0, 1); // третья
glVertex3d(-3.5, 4, 0);
glEnd();
glPointSize(5);
glBegin(GL_POINTS);
glColor3d(1, 0, 0);
glVertex3d(-2, 4, 0); // первая точка
glColor3d(0, 1, 0);
glVertex3d(-1, 4, 0); // вторая точка
glColor3d(0, 0, 1); // третье
glVertex3d(0, 4, 0);
glEnd();
glPointSize(10);
glEnable(GL_POINT_SMOOTH);
glBegin(GL_POINTS);
glColor3d(1, 0, 0);
glVertex3d(2, 4, 0); // первая точка
glColor3d(0, 1, 0);
glVertex3d(3, 4, 0); // вторая точка
glColor3d(0, 0, 1); // третья
glVertex3d(4, 4, 0);
glEnd();
glDisable(GL_POINT_SMOOTH);

return o_wglSwapBuffers(hDc);
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
HMODULE handle = GetModuleHandleW(L"opengl32.dll");
pSwapBuffers = reinterpret_cast<wglSwapBuffers_t>(GetProcAddress(handle, "wglSwapBuffers"));
if (MH_Initialize() != MH_OK) {
MessageBox(0, "MH_Initialize error", 0, 0);
}
if (MH_CreateHook(pSwapBuffers, WallHack, reinterpret_cast<void**>(&o_wglSwapBuffers)) != MH_OK) {
MessageBox(0, "MH_CreateHook error", 0, 0);
}
MH_EnableHook(pSwapBuffers);
}
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#include <iostream>
#include <windows.h>
#include "GL.h"
#include <vector>
#include "MinHook.h"
 
C++
Забаненный
Статус
Оффлайн
Регистрация
3 Окт 2019
Сообщения
658
Реакции[?]
129
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет. Помогите пожалуйста. Хукаю через MinHook "wglSwapBuffers", и пытаюсь через gl отрендерить точки, но они начинают мерцать/моргать.
P.s. на Minecraft 1.6.4 оно хотя-бы отрисовывается хоть и с мерцанием, а на 1.14.4 оно вообще не рендерится.
Так тебе и не нужен SwapBuffers
 
EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
Пользователь
Статус
Оффлайн
Регистрация
13 Мар 2018
Сообщения
306
Реакции[?]
52
Поинты[?]
1K
А почему не просто SwapBuffers? У меня в майнкрафте стоял хук на просто SwapBuffers и там все прекрасно рисовалось.
wglswapbuffers это свап бафер опен гла, а вообще да, можно выводить и просто в swapbuffers
 
EFI_COMPROMISED_DATA
лучший в мире
Статус
Оффлайн
Регистрация
26 Янв 2018
Сообщения
920
Реакции[?]
1,632
Поинты[?]
85K
wglswapbuffers это свап бафер опен гла, а вообще да, можно выводить и просто в swapbuffers
понял
ну мне было лень разбираться поэтому я просто из гди32 хукал свапбуффер
 
Начинающий
Статус
Оффлайн
Регистрация
26 Май 2019
Сообщения
114
Реакции[?]
21
Поинты[?]
4K
А почему не просто SwapBuffers? У меня в майнкрафте стоял хук на просто SwapBuffers и там все прекрасно рисовалось.
У меня не получилось хукать SwapBuffers. Просто ничего не рисуется тогда вообще
 
C++
Забаненный
Статус
Оффлайн
Регистрация
3 Окт 2019
Сообщения
658
Реакции[?]
129
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
26 Май 2019
Сообщения
114
Реакции[?]
21
Поинты[?]
4K
Решил вопрос. Всё зависит от версии игры... На 1.6.4 мерцало, на 1.14.4 не рендерилось, на 1.7.10 всё нормально...........1651769881695.png
 
Начинающий
Статус
Оффлайн
Регистрация
26 Май 2019
Сообщения
114
Реакции[?]
21
Поинты[?]
4K
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2021
Сообщения
147
Реакции[?]
14
Поинты[?]
2K
you draw with opengl, think opengl not same for 1.6.4 that 1.7.10 that 1.14.4. For 1.14.4 function used by you use other name, or other function. For 1.7.10 its same that 1.6.4 but rewrited. (almost sure).
 
Сверху Снизу