Merge remote-tracking branch 'svn/trunk' into git_master
This commit is contained in:
commit
c8d14b13af
@ -92,6 +92,8 @@
|
||||
|
||||
#define GLUT_ALLOW_NEGATIVE_WINDOW_POSITION 0x0207 /* GLUT doesn't allow negative window positions by default */
|
||||
|
||||
#define GLUT_WINDOW_SRGB 0x007D
|
||||
|
||||
/*
|
||||
* New tokens for glutInitDisplayMode.
|
||||
* Only one GLUT_AUXn bit may be used at a time.
|
||||
|
@ -46,7 +46,14 @@ extern void fghComputeWindowRectFromClientArea_UseStyle( RECT *clientRect, const
|
||||
* #include <GL/wglext.h>
|
||||
* 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 <Aygshell.h>
|
||||
@ -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;
|
||||
|
@ -83,6 +83,7 @@ int fghPlatformGlutGetGLX ( GLenum eWhat )
|
||||
GLX_QUERY( GLUT_WINDOW_ACCUM_BLUE_SIZE, GLX_ACCUM_BLUE_SIZE );
|
||||
GLX_QUERY( GLUT_WINDOW_ACCUM_ALPHA_SIZE, GLX_ACCUM_ALPHA_SIZE );
|
||||
GLX_QUERY( GLUT_WINDOW_STEREO, GLX_STEREO );
|
||||
GLX_QUERY( GLUT_WINDOW_SRGB, GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB);
|
||||
|
||||
# undef GLX_QUERY
|
||||
|
||||
|
@ -182,6 +182,8 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
||||
fgState.DisplayMode |= GLUT_DOUBLE ;
|
||||
fghChooseConfig(&WINDOW_CONFIG);
|
||||
fgState.DisplayMode &= ~GLUT_DOUBLE;
|
||||
|
||||
if( WINDOW_CONFIG ) goto done_retry;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -190,8 +192,20 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
||||
fgState.DisplayMode &= ~GLUT_MULTISAMPLE ;
|
||||
fghChooseConfig(&WINDOW_CONFIG);
|
||||
fgState.DisplayMode |= GLUT_MULTISAMPLE;
|
||||
|
||||
if( WINDOW_CONFIG ) goto done_retry;
|
||||
}
|
||||
|
||||
if( fgState.DisplayMode & GLUT_SRGB )
|
||||
{
|
||||
fgState.DisplayMode &= ~GLUT_SRGB ;
|
||||
fghChooseConfig(&WINDOW_CONFIG);
|
||||
fgState.DisplayMode |= GLUT_SRGB;
|
||||
|
||||
if( WINDOW_CONFIG ) goto done_retry;
|
||||
}
|
||||
}
|
||||
done_retry:
|
||||
|
||||
FREEGLUT_INTERNAL_ERROR_EXIT( WINDOW_CONFIG != NULL,
|
||||
"FBConfig with necessary capabilities not found", "fgOpenWindow" );
|
||||
|
Reference in New Issue
Block a user