| 29 | } |
| 30 | |
| 31 | bool ProfileManager::Initialize() |
| 32 | { |
| 33 | if (!glfwInit()) |
| 34 | return false; |
| 35 | |
| 36 | HDC dc = wglGetCurrentDC(); |
| 37 | HGLRC ctx = wglGetCurrentContext(); |
| 38 | |
| 39 | if (!m_ProfileWindow) |
| 40 | { |
| 41 | m_ProfileWindow = glfwCreateWindow(PROFILE_WINDOW_WIDTH, PROFILE_WINDOW_HEIGHT, "Revive Microprofile", NULL, NULL); |
| 42 | if (!m_ProfileWindow) |
| 43 | return false; |
| 44 | |
| 45 | glfwSetWindowAttrib(m_ProfileWindow, GLFW_RESIZABLE, false); |
| 46 | glfwSetMouseButtonCallback(m_ProfileWindow, MouseButtonCallback); |
| 47 | glfwSetCursorPosCallback(m_ProfileWindow, CursorPosCallback); |
| 48 | glfwSetScrollCallback(m_ProfileWindow, ScrollCallback); |
| 49 | |
| 50 | glfwMakeContextCurrent(m_ProfileWindow); |
| 51 | if (!gladLoadGL() || !gladLoadWGL(wglGetCurrentDC())) |
| 52 | return false; |
| 53 | |
| 54 | MicroProfileDrawInitGL(); |
| 55 | assert(glGetError() == 0); |
| 56 | } |
| 57 | else |
| 58 | { |
| 59 | glfwMakeContextCurrent(m_ProfileWindow); |
| 60 | } |
| 61 | |
| 62 | if (m_ProfileOverlay == vr::k_ulOverlayHandleInvalid) |
| 63 | { |
| 64 | vr::VROverlay()->CreateOverlay("revive.debug.microprofile", "Revive Microprofile", &m_ProfileOverlay); |
| 65 | vr::VROverlay()->SetOverlayWidthInMeters(m_ProfileOverlay, 0.5f); |
| 66 | vr::VROverlay()->SetOverlayInputMethod(m_ProfileOverlay, vr::VROverlayInputMethod_Mouse); |
| 67 | vr::VROverlay()->SetOverlayFlag(m_ProfileOverlay, vr::VROverlayFlags_VisibleInDashboard, true); |
| 68 | vr::VROverlay()->SetOverlayFlag(m_ProfileOverlay, vr::VROverlayFlags_SortWithNonSceneOverlays, true); |
| 69 | vr::VROverlay()->SetOverlayFlag(m_ProfileOverlay, vr::VROverlayFlags_SendVRDiscreteScrollEvents, true); |
| 70 | |
| 71 | int width, height; |
| 72 | glfwGetFramebufferSize(m_ProfileWindow, &width, &height); |
| 73 | vr::HmdVector2_t vecWindowSize = { (float)width, (float)height }; |
| 74 | vr::VROverlay()->SetOverlayMouseScale(m_ProfileOverlay, &vecWindowSize); |
| 75 | } |
| 76 | |
| 77 | MicroProfileSetDisplayMode(1); |
| 78 | wglMakeCurrent(dc, ctx); |
| 79 | return true; |
| 80 | } |
| 81 | |
| 82 | void* ProfileManager::GetContext() |
| 83 | { |
no test coverage detected