Merge remote-tracking branch 'svn/trunk' into git_master

This commit is contained in:
Diederick C. Niehorster 2018-04-03 00:11:13 +02:00
commit c8d14b13af
4 changed files with 43 additions and 0 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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

View File

@ -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" );