X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glws_wgl.cpp;h=9e8f1e036432a81298b135004c835e790a1e773f;hb=1a9f7af32205d900c88fef0b544546eb0d7c84ee;hp=b1e274b5f9314f27e2394f1ea362b70f0a4d3cb9;hpb=7497c130f98f33f41437678835f4b2eb2abce750;p=apitrace diff --git a/glws_wgl.cpp b/glws_wgl.cpp index b1e274b..9e8f1e0 100644 --- a/glws_wgl.cpp +++ b/glws_wgl.cpp @@ -81,7 +81,7 @@ public: } dwExStyle = 0; - dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_VISIBLE | WS_OVERLAPPEDWINDOW; + dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW; int x = 0, y = 0; @@ -107,10 +107,11 @@ public: hDC = GetDC(hWnd); memset(&pfd, 0, sizeof pfd); - pfd.cColorBits = 3; + pfd.cColorBits = 4; pfd.cRedBits = 1; pfd.cGreenBits = 1; pfd.cBlueBits = 1; + pfd.cAlphaBits = 1; pfd.cDepthBits = 1; pfd.cStencilBits = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; @@ -144,6 +145,14 @@ public: SetWindowPos(hWnd, NULL, rWindow.left, rWindow.top, w, h, SWP_NOMOVE); } + void show(void) { + if (!visible) { + ShowWindow(hWnd, SW_SHOW); + + Drawable::show(); + } + } + void swapBuffers(void) { SwapBuffers(hDC); } @@ -154,10 +163,12 @@ class WglContext : public Context { public: HGLRC hglrc; - - WglContext(const Visual *vis) : + WglContext *shareContext; + + WglContext(const Visual *vis, WglContext *share) : Context(vis), - hglrc(0) + hglrc(0), + shareContext(share) {} ~WglContext() { @@ -187,9 +198,9 @@ public: } Context * - createContext(const Visual *visual) + createContext(const Visual *visual, Context *shareContext) { - return new WglContext(visual); + return new WglContext(visual, dynamic_cast(shareContext)); } bool @@ -206,6 +217,10 @@ public: if (!wglContext->hglrc) { return false; } + if (wglContext->shareContext) { + wglShareLists(wglContext->shareContext->hglrc, + wglContext->hglrc); + } } return wglMakeCurrent(wglDrawable->hDC, wglContext->hglrc);