Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ImGui (d3d9) nie renderuje
#1
Próbuję po prostu ustawić ImGui w polu testowym d3d9. Podłączyłem EndScene i mam rysunkowy prostokąt dla mojego zdrowia psychicznego.     Ten obraz został przeskalowany. Kliknij ten pasek, aby wyświetlić pełny obraz. Oryginalny obraz ma rozmiar 806 x 609.   Podążyłem za niektórymi źródłami z ImGui i próbowałem go wdrożyć, ale to po prostu nie wyświetla nic w oknie testowym d3d9.   ImGui Initialize     Kod:   void IntializeImGui (LPDIRECT3DDEVICE9 pDevice) {IMGUI_CHECKVERSION (); // Kontekst ImGui :: CreateContext (); // IO ImGuiIO & io = ImGui :: GetIO (); io. DeltaTime = 1,0f / 60,0f; // D3D D3DDEVICE_CREATION_PARAMETERS d3dcp {0}; pDevice -> GetCreationParameters (& d3dcp); // Czcionki io. Czcionki -> AddFontDefault (); // Init ImGui_ImplDX9_Init (d3dcp. HFocusWindow, pDevice); // Style ImGui :: StyleColorsDark (); g_oriWndProc = (WNDPROC) SetWindowLongPtr (d3dcp. hFocusWindow, GWL_WNDPROC, (LONG_PTR) hWndProc); if (g_oriWndProc == NULL) {WINLOGA ("g_oriWndProc NULL"); }}   EndScene     Kod:   HRESULT WINAPI hkEndScene (LPDIRECT3DDEVICE9 pDevice) {if (g_bInitialized) {IntializeImGui (pDevice); g_bInitialized = false; } FilledBox (pDevice, 100, 100, 100, 100, D3DCOLOR_RGBA (100, 100, 100, 255)); ImGui_ImplDX9_NewFrame (); ImGui :: GetIO (). MouseDrawCursor = 1; ImGui :: Begin ("Rozpocznij test", i g_bMenuOpen, ImVec2 (350, 300), 1.f, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); ImGui :: Text ("Testowanie 123"); ImGui :: End (); ImGui :: Render (); // pDevice-> SetRenderState (D3DRS_COLORWRITEENABLE, 0xFFFFFFFF); return oEndScene (pDevice); }   ImGui_ImplDX9_WndProcHandler     Kod:   LRESULT ImGui_ImplDX9_WndProcHandler (HWND, UINT msg, WPARAM wParam, LPARAM lParam) {ImGuiIO i io = ImGui :: GetIO (); switch (msg) {case WM_LBUTTONDOWN: io. MouseDown [0] = true; return true; case WM_LBUTTONUP: io. MouseDown [0] = false; return true; case WM_RBUTTONDOWN: io. MouseDown [1] = true; return true; Przypadek WM_RBUTTONUP: io. MouseDown [1] = false; return true; case WM_MBUTTONDOWN: io. MouseDown [2] = true; return true; case WM_MBUTTONUP: io. MouseDown [2] = false; return true; case WM_XBUTTONDOWN: if ((GET_KEYSTATE_WPARAM (wParam) i MK_XBUTTON1) == MK_XBUTTON1) io. MouseDown [3] = true; else if ((GET_KEYSTATE_WPARAM (wParam) i MK_XBUTTON2) == MK_XBUTTON2) io. MouseDown [4] = true; return true; case WM_XBUTTONUP: if ((GET_KEYSTATE_WPARAM (wParam) i MK_XBUTTON1) == MK_XBUTTON1) io. MouseDown [3] = false; else if ((GET_KEYSTATE_WPARAM (wParam) i MK_XBUTTON2) == MK_XBUTTON2) io. MouseDown [4] = false; return true; case WM_MOUSEWHEEL: io. MouseWheel + = GET_WHEEL_DELTA_WPARAM (wParam)> 0? + 1,0f: - 1,0f; return true; Przypadek WM_MOUSEMOVE: io. MousePos. x = (podpisane krótkie) (lParam); io. MousePos. y = (podpisane krótkie) (lParam >> 16); return true; case WM_KEYDOWN: if (wParam <256) io. KeysDown [wParam] = 1; return true; case WM_KEYUP: if (wParam <256) io. KeysDown [wParam] = 0; return true; case WM_CHAR: // Możesz również użyć ToAscii () + GetKeyboardState (), aby pobrać znaki. if (wParam> 0 && wParam <0x10000) io. AddInputCharacter ((unsigned short) wParam); return true; } return 0; }   hWndProc     Kod:   LRESULT CALLBACK hWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM dwNewLong) {if (ImGui_ImplDX9_WndProcHandler (hWnd, uMsg, wParam, dwNewLong) && GetKeyState (VK_DELETE) == 1) {return 1l; } Return CallWindowProc (g_oriWndProc, hWnd, uMsg, wParam, dwNewLong); }   kiedy wstrzyknięto cały powyższy kod, nic się nie renderuje, tylko szare pudełko renderuje.   każda pomoc będzie doceniona.
Reply
#2
Spróbuj tego Kod: ImGuiIO i io = ImGui :: GetIO (); io. DeltaTime = 1,0f / 60,0f; D3DDEVICE_CREATION_PARAMETERS d3dcp; pDevice -> GetCreationParameters (& d3dcp); m_hTargetWindow = d3dcp. hFocusWindow; g_oriWndProc = reinterpret_cast (SetWindowLongPtr (m_hTargetWindow, GWLP_WNDPROC, LONG_PTR (hWndProc))); io. Czcionki -> AddFontDefault (); ImGui_ImplDX9_Init (m_hTargetWindow, pDevice); ImGui :: StyleColorsDark ();
Reply
#3
Potrzebujesz połączenia ImGui_ImplDX9_RenderDrawData Kod: ImGui_ImplDX9_NewFrame (); ImGui :: GetIO (). MouseDrawCursor = 1; ImGui :: Begin ("Rozpocznij test", i g_bMenuOpen, ImVec2 (350, 300), 1.f, ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); ImGui :: Text ("Testowanie 123"); ImGui :: End (); ImGui :: Render (); ImGui_ImplDX9_RenderDrawData (ImGui :: GetDrawData ());
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)