![]() |
Как получить контекст GM8 - Версия для печати +- Xtreme3D Community (https://xtreme3d.ru/forums) +-- Форум Общее (https://xtreme3d.ru/forums/forumdisplay.php?fid=4) +--- Форум GameMaker (https://xtreme3d.ru/forums/forumdisplay.php?fid=17) +--- Темы: Как получить контекст GM8 (/showthread.php?tid=58) |
Как получить контекст GM8 - FireRun - 11-15-2021 Привет всем, как же давно уже не создавал новых тем на форуме ![]() Вопрос такой, хочу подключить библиотеку ImGui к гм8, только чтобы дисплеи не перерисовывался, а рисовался на контексте самого GM8 (DX8 или DX9?), никогда не пробовал такого, как это можно сделать на С++? Как получить контекст GM8 - Gecko - 11-19-2021 Раньше можно было получить контекст при помощи GMAPI, но я его не тестировал с GM8. Могу поковырять на досуге, может работает) Как получить контекст GM8 - Gecko - 11-19-2021 В общем, что сумел выяснить, изучив исходники: необязательно подключать весь GMAPI, достаточно просто получить указатели IDirect3D8* и IDirect3DDevice8* по адресу в памяти приложения. Для GM 8.0 это 0x0058D384. Можно написать вот так: Код: [== C++ ==] И потом использовать переменную d3d для извлечения девайса, где это нужно, например: Код: [== C++ ==] Остальные методы девайса не проверял, но тоже должны работать. Но, честно говоря, как все это будет дружить с внутренней логикой GM - темный лес... Для 6.1 и 7.0 адреса будут, соответственно, такие: Код: [== C++ ==] Там есть какой-то хитрый метод динамического определения версии GM, но я еще в нем не разобрался. Как получить контекст GM8 - FireRun - 11-22-2021 Спасибо, завтра обязательно опробую) Если что выложу сюда Как получить контекст GM8 - FireRun - 12-13-2021 В общем ничего не вышло, ImGui для dx8 нет, минимальная версия это dx9. Но, руки опускать все ровно не хочется, раз с встроенным GUI движком в xtreme3d проблемы, решил стоит попробовать портировать imgui для xtreme3d, там как раз есть биндинг для win32 и opengl 2. Только как подключится к контексту X3D я не знаю, в GLScene нет функции для получения HDC и HGLRC (или я не нашел), если будет у кого время добавить функции для возврата текущих HDC и HGLRC (wglGetCurrentContext) в x3d, готов полностью добавить ImGui ![]() Как получить контекст GM8 - FireRun - 12-13-2021 Проверил работоспособность убрав все функции x3d, работает все отлично, но только на новом контексте wglCreateContext, есть идеи как к x3d прикрутить ? ![]() в xtreme3d добавил 3 функции: Код: [== Неизвестный ==] но я сомневаюсь, действительно ли они возвращают то что надо, потому что они ни как мне не помогли. Как получить контекст GM8 - FireRun - 12-13-2021 Заменил функции таким способом, но все ровно ничего не отображается Код: [== Неизвестный ==] Как получить контекст GM8 - Gecko - 12-18-2021 Теоретически через wglGetCurrentContext должно работать, но видимо не так все просто с рендерингом извне. Где-то что-то не так установлено, какие-то свойства glEnable, ресурсы не так подключены на момент входа в контекст - и в итоге очень высока вероятность, что не сработает. Это очень сложно отлаживать, к сожалению. Даже непонятно, с какой стороны подходить. В идеале конечно лучше ImGui непосредственно в сам движок добавить как расширение. |