X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_state_mswin.c;h=98468f5f512e6dff9c854f00d7d9d8f58e13f9f1;hb=e1b231e938f0851ea4fb97c9ee2aae59110dd24a;hp=b8f3e00dae0416ac2065c205ee15c4baaa389e14;hpb=b1ed93dd348f7b8f3bd2c75474f5d4151d502f1f;p=freeglut diff --git a/src/mswin/fg_state_mswin.c b/src/mswin/fg_state_mswin.c index b8f3e00..98468f5 100644 --- a/src/mswin/fg_state_mswin.c +++ b/src/mswin/fg_state_mswin.c @@ -46,7 +46,14 @@ extern void fghComputeWindowRectFromClientArea_UseStyle( RECT *clientRect, const * #include * So we copy the necessary parts out of it to support the multisampling query */ +#ifndef WGL_SAMPLES_ARB #define WGL_SAMPLES_ARB 0x2042 +#endif +#ifndef WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 +#endif + +typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues); #if defined(_WIN32_WCE) # include @@ -284,6 +291,25 @@ int fgPlatformGlutGet ( GLenum eWhat ) #endif /* defined(_WIN32_WCE) */ return 0; + case GLUT_WINDOW_SRGB: + if( fgStructure.CurrentWindow != NULL ) { + static int attr = WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB; + static PFNWGLGETPIXELFORMATATTRIBIVARBPROC wglGetPixelFormatAttribivARB; + HDC hdc = fgStructure.CurrentWindow->Window.pContext.Device; + int ipixfmt = GetPixelFormat(hdc); + int val; + + if(!wglGetPixelFormatAttribivARB) { + if(!(wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)wglGetProcAddress("wglGetPixelFormatAttribivARB"))) { + return 0; + } + } + if(wglGetPixelFormatAttribivARB(hdc, ipixfmt, 0, 1, &attr, &val)) { + return val; + } + } + return 0; + default: fgWarning( "glutGet(): missing enum handle %d", eWhat ); break;