SweetAss1337 Опубликовано 15 января, 2019 Поделиться Опубликовано 15 января, 2019 Имеется хук функции в графической библиотеке (glSwapBuffers). Таким образом я рисую простое гуи, но управлять им могу только кнопками, без обработки событий. Хочется использовать более сложную библиотеку типа ImGUI и ей подобных. Но на сколько я понял у меня не получится взять контекст игры. То есть opengl не предусматривает такой возможности вообще, а даже если и предусматривает то это так не работает. Могу ли я рисовать такие сложные вещи в чужом окне? Что для этого нужно? Я видел пример использования этой библиотеки в CS GO, но она может рисоваться как через directX так и через openGL на выбор, на сколько я знаю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 15 января, 2019 Поделиться Опубликовано 15 января, 2019 wglGetCurrentContext пробовал? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 15 января, 2019 Поделиться Опубликовано 15 января, 2019 7 часов назад, Xipho сказал: wglGetCurrentContext пробовал? Поддерживаю. В OGLHook делал именно так: после хука glSwapBuffers сохранял текущий контекст через wglGetCurrentContext, после создавал новый через wglCreateContext, переключался на новый через wglMakeCurrent, рисовал всё что нужно и возвращал старый через wglMakeCurrent. Главное помнить, что если работать в отдельном потоке - нужно создавать контекст и на него. Я так создавал поток, в котором грузил текстуры параллельно с выполнением основного кода, но пришлось сращивать контексты через wglShareLists. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SweetAss1337 Опубликовано 18 января, 2019 Автор Поделиться Опубликовано 18 января, 2019 (изменено) Получилось отрисовать, действительно пришлось создавать свой контекст. Оказывается в imgui есть возможность рисовать без использования сторонних библиотек, только средствами чистого opengl, но возникает проблема с обработкой событий. Я нашел Пример (ссылка почему-то открывается только через vpn) с использованием хука SDL для перехвата событий, но в моей целевой игре не используется SDL, поэтому я просто использовал глобальный хук мыши и клавиатуры. Если кому надо: так же имеется пример отрисовки на чистом opengl https://github.com/ocornut/imgui/pull/1553/files Изменено 18 января, 2019 пользователем SweetAss1337 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения