void SimpleGLWindow::Initialize(u32 flags) { RECT rect; GetWindowRect(hWnd_, &rect); SetFlags(flags); SetupGL(); ResizeGL(rect.right-rect.left,rect.bottom-rect.top); CreateProgram(); GenerateChecker(); }
void wxCoreGLCanvas::OnSize(wxSizeEvent& event) { # ifdef __WXGTK__ if(false == mPainted) { return; } # endif //this is also necessary to update the context on some platforms event.Skip(); ResizeGL(); SetDirty(); }
void WindowsHeadlessHost::InitGL() { glOkay = false; hWnd = CreateHiddenWindow(); if (WINDOW_VISIBLE) { ShowWindow(hWnd, TRUE); SetFocus(hWnd); } int pixelFormat; static PIXELFORMATDESCRIPTOR pfd = {0}; pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 32; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; #define ENFORCE(x, msg) { if (!(x)) { fprintf(stderr, msg); return; } } ENFORCE(hDC = GetDC(hWnd), "Unable to create DC."); ENFORCE(pixelFormat = ChoosePixelFormat(hDC, &pfd), "Unable to match pixel format."); ENFORCE(SetPixelFormat(hDC, pixelFormat, &pfd), "Unable to set pixel format."); ENFORCE(hRC = wglCreateContext(hDC), "Unable to create GL context."); ENFORCE(wglMakeCurrent(hDC, hRC), "Unable to activate GL context."); SetVSync(0); glewInit(); glstate.Initialize(); LoadNativeAssets(); if (ResizeGL()) glOkay = true; }
int Create(){ GLuint PixelFormat; WNDCLASS wc; RECT WindowRect; WindowRect.left = WindowRect.top = 0; WindowRect.right = mWidth; WindowRect.bottom = mHeight; mInstance = GetModuleHandle(NULL); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = mInstance; wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = mClassName; if(!RegisterClass(&wc)) return FALSE; AdjustWindowRectEx(&WindowRect, WS_OVERLAPPEDWINDOW, FALSE, WS_EX_APPWINDOW | WS_EX_WINDOWEDGE); mHWND = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, mClassName, mTitle, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, WindowRect.right - WindowRect.left, WindowRect.bottom - WindowRect.top, NULL, NULL, mInstance, (LPVOID)this); if(!mHWND){ Destroy(); return FALSE; } static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0,0, 0, 0 }; mHDC = GetDC(mHWND); if(!mHDC){ Destroy(); return FALSE; } PixelFormat = ChoosePixelFormat(mHDC, &pfd); if(!PixelFormat){ Destroy(); return FALSE; } if(!SetPixelFormat(mHDC, PixelFormat, &pfd)){ Destroy(); return FALSE; } mHRC = wglCreateContext(mHDC); if(!mHRC){ Destroy(); return FALSE; } if(!wglMakeCurrent(mHDC, mHRC)){ Destroy(); return FALSE; } ShowWindow(mHWND, SW_SHOW); SetForegroundWindow(mHWND); SetFocus(mHWND); ResizeGL(mWidth, mHeight); if(!InitGL()){ Destroy(); return FALSE; } mActive = TRUE; return TRUE; }