Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Вопрос про рисовку ESP

Разработчик
Разработчик
Статус
Оффлайн
Регистрация
21 Июн 2025
Сообщения
155
Реакции
61
WorldToScreen реализую с нуля, точнее то, что мне нужно, а именно преобразование 3D-координат игрового мира в 2D-координаты монитора.
1772217228953.png


ASM:
Expand Collapse Copy
    movss xmm0, [posX]
    mulss xmm0, [view_matrix + 12]
    movss xmm1, [posY]
    mulss xmm1, [view_matrix + 28]
    addss xmm0, xmm1
    movss xmm1, [posZ]
    mulss xmm1, [view_matrix + 44]
    addss xmm0, xmm1
    addss xmm0, [view_matrix + 60]
 
    movaps xmm10, xmm0
 
    movss xmm1, [min_w]
    comiss xmm10, xmm1
    jb .loop_pos
 
    movss xmm0, [posX]
    mulss xmm0, [view_matrix + 0]
    movss xmm1, [posY]
    mulss xmm1, [view_matrix + 16]
    addss xmm0, xmm1
    movss xmm1, [posZ]
    mulss xmm1, [view_matrix + 32]
    addss xmm0, xmm1
    addss xmm0, [view_matrix + 48]
 
    divss xmm0, xmm10
 
    mulss xmm0, [half_w]
    addss xmm0, [half_w]
    movss [screenX], xmm0
 
    movss xmm0, [posX]
    mulss xmm0, [view_matrix + 4]
    movss xmm1, [posY]
    mulss xmm1, [view_matrix + 20]
    addss xmm0, xmm1
    movss xmm1, [posZ]
    mulss xmm1, [view_matrix + 36]
    addss xmm0, xmm1
    addss xmm0, [view_matrix + 52]
 
    divss xmm0, xmm10
 
    mulss xmm0, [half_h]
    movss xmm1, [half_h]
    subss xmm1, xmm0
    movss [screenY], xmm1
Сам W2T работает отлично, как видно на скрине.

Но стоит мне начать рисовать графику, через OpenGL т.к асаулт использует OpenGL. У меня еще на этапе создания окна или инициализации контекста появляется сплошное белое окно на весь экран.
Стили окна: WS_EX_LAYERED | WS_EX_TOPMOST | WS_EX_TRANSPARENT
И при этом вызываю SetLayeredWindowAttributes с LWA_COLORKEY чтобы сделать окно прозрачным, но оно все равно белое при запуске кода, на фулл экран.

Было у кого такое? Буду благодарен если кто поможет пофиксить.
 
WorldToScreen реализую с нуля, точнее то, что мне нужно, а именно преобразование 3D-координат игрового мира в 2D-координаты монитора.
Посмотреть вложение 328963

ASM:
Expand Collapse Copy
    movss xmm0, [posX]
    mulss xmm0, [view_matrix + 12]
    movss xmm1, [posY]
    mulss xmm1, [view_matrix + 28]
    addss xmm0, xmm1
    movss xmm1, [posZ]
    mulss xmm1, [view_matrix + 44]
    addss xmm0, xmm1
    addss xmm0, [view_matrix + 60]
 
    movaps xmm10, xmm0
 
    movss xmm1, [min_w]
    comiss xmm10, xmm1
    jb .loop_pos
 
    movss xmm0, [posX]
    mulss xmm0, [view_matrix + 0]
    movss xmm1, [posY]
    mulss xmm1, [view_matrix + 16]
    addss xmm0, xmm1
    movss xmm1, [posZ]
    mulss xmm1, [view_matrix + 32]
    addss xmm0, xmm1
    addss xmm0, [view_matrix + 48]
 
    divss xmm0, xmm10
 
    mulss xmm0, [half_w]
    addss xmm0, [half_w]
    movss [screenX], xmm0
 
    movss xmm0, [posX]
    mulss xmm0, [view_matrix + 4]
    movss xmm1, [posY]
    mulss xmm1, [view_matrix + 20]
    addss xmm0, xmm1
    movss xmm1, [posZ]
    mulss xmm1, [view_matrix + 36]
    addss xmm0, xmm1
    addss xmm0, [view_matrix + 52]
 
    divss xmm0, xmm10
 
    mulss xmm0, [half_h]
    movss xmm1, [half_h]
    subss xmm1, xmm0
    movss [screenY], xmm1
Сам W2T работает отлично, как видно на скрине.

Но стоит мне начать рисовать графику, через OpenGL т.к асаулт использует OpenGL. У меня еще на этапе создания окна или инициализации контекста появляется сплошное белое окно на весь экран.
Стили окна: WS_EX_LAYERED | WS_EX_TOPMOST | WS_EX_TRANSPARENT
И при этом вызываю SetLayeredWindowAttributes с LWA_COLORKEY чтобы сделать окно прозрачным, но оно все равно белое при запуске кода, на фулл экран.

Было у кого такое? Буду благодарен если кто поможет пофиксить.
Привет, можешь посмотреть реализацию тут
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
скинь саму реализацию создания окна, SetLayeredWindowAttributes должен вызываться ПОСЛЕ CreateWindow и ДО создания контекста
 
скинь саму реализацию создания окна, SetLayeredWindowAttributes должен вызываться ПОСЛЕ CreateWindow и ДО создания контекста
1772277705700.png

Все самое необходимое сделано, W2S тоже, оффсеты тоже абсолютно верные. Тут проблема конкретно в рисовке как я понял, вообще никогда не трогал OpenGL в прошлом, просто почитал базу, посмотрел пару сурсов и реализовал что-то свое.
1772277499515.png

Константы тоже объявлены.
1772277519808.png
 
Последнее редактирование:
а почему именно на openGL? Главная причина что WS_EX_LAYERED не совместим с CS_OWNDC то что использует openGL(
Пожалуйста, авторизуйтесь для просмотра ссылки.
)
как по мне лучший вариант убрать WS_EX_LAYERED и использовать DWM
(я не знаю как на asm) но ты должен
Код:
Expand Collapse Copy
MARGINS margins = { -1 };
DwmExtendFrameIntoClientArea(hOverlay, &margins);

в StartRender (где создание нового фрейма)
Код:
Expand Collapse Copy
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
Также скинь как ты заполняешь структуру PIXELFORMATDESCRIPTOR там в cAlphaBits должно стоять 8
Если не поможет можешь еще попробывать в WNDCLASS в .hbrBackground = nullptr и в .style = CS_OWNDC
 
Назад
Сверху Снизу