mirror of
https://github.com/glfw/glfw.git
synced 2024-12-01 14:27:13 +00:00
Added support for EXT_framebuffer_sRGB.
Added sRGB extensions to standards conformance page.
This commit is contained in:
parent
bfe55118dd
commit
04c057238b
@ -117,6 +117,11 @@ whether a context is flushed when it is released (made non-current). Where this
|
|||||||
extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no
|
extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no
|
||||||
effect and the context will always be flushed when released.
|
effect and the context will always be flushed when released.
|
||||||
|
|
||||||
|
GLFW uses the `GLX_ARB_framebuffer_sRGB` and `GLX_EXT_framebuffer_sRGB`
|
||||||
|
extensions to provide support for sRGB framebuffers. Where both of these
|
||||||
|
extensions are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect.
|
||||||
|
|
||||||
|
|
||||||
@section compat_wgl WGL extensions
|
@section compat_wgl WGL extensions
|
||||||
|
|
||||||
The WGL API is used to create OpenGL contexts on Microsoft Windows and other
|
The WGL API is used to create OpenGL contexts on Microsoft Windows and other
|
||||||
@ -154,6 +159,11 @@ whether a context is flushed when it is released (made non-current). Where this
|
|||||||
extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no
|
extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no
|
||||||
effect and the context will always be flushed when released.
|
effect and the context will always be flushed when released.
|
||||||
|
|
||||||
|
GLFW uses the `WGL_ARB_framebuffer_sRGB` and `WGL_EXT_framebuffer_sRGB`
|
||||||
|
extensions to provide support for sRGB framebuffers. Where both of these
|
||||||
|
extension are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect.
|
||||||
|
|
||||||
|
|
||||||
@section compat_osx OpenGL 3.2 and later on OS X
|
@section compat_osx OpenGL 3.2 and later on OS X
|
||||||
|
|
||||||
Support for OpenGL 3.2 and above was introduced with OS X 10.7 and even then
|
Support for OpenGL 3.2 and above was introduced with OS X 10.7 and even then
|
||||||
|
@ -206,6 +206,8 @@ Zero disables multisampling. `GLFW_DONT_CARE` means the application has no
|
|||||||
preference.
|
preference.
|
||||||
|
|
||||||
`GLFW_SRGB_CAPABLE` specifies whether the framebuffer should be sRGB capable.
|
`GLFW_SRGB_CAPABLE` specifies whether the framebuffer should be sRGB capable.
|
||||||
|
If supported, the created context will provide `GL_ARB_framebuffer_sRGB` or
|
||||||
|
`GL_EXT_framebuffer_sRGB`.
|
||||||
|
|
||||||
`GLFW_DOUBLEBUFFER` specifies whether the framebuffer should be double buffered.
|
`GLFW_DOUBLEBUFFER` specifies whether the framebuffer should be double buffered.
|
||||||
You nearly always want to use double buffering. This is a hard constraint.
|
You nearly always want to use double buffering. This is a hard constraint.
|
||||||
|
@ -117,7 +117,7 @@ static GLboolean chooseFBConfig(const _GLFWfbconfig* desired, GLXFBConfig* resul
|
|||||||
if (_glfw.glx.ARB_multisample)
|
if (_glfw.glx.ARB_multisample)
|
||||||
u->samples = getFBConfigAttrib(n, GLX_SAMPLES);
|
u->samples = getFBConfigAttrib(n, GLX_SAMPLES);
|
||||||
|
|
||||||
if (_glfw.glx.ARB_framebuffer_sRGB)
|
if (_glfw.glx.ARB_framebuffer_sRGB || _glfw.glx.EXT_framebuffer_sRGB)
|
||||||
u->sRGB = getFBConfigAttrib(n, GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB);
|
u->sRGB = getFBConfigAttrib(n, GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB);
|
||||||
|
|
||||||
u->glx = n;
|
u->glx = n;
|
||||||
@ -226,6 +226,9 @@ int _glfwInitContextAPI(void)
|
|||||||
if (_glfwPlatformExtensionSupported("GLX_ARB_framebuffer_sRGB"))
|
if (_glfwPlatformExtensionSupported("GLX_ARB_framebuffer_sRGB"))
|
||||||
_glfw.glx.ARB_framebuffer_sRGB = GL_TRUE;
|
_glfw.glx.ARB_framebuffer_sRGB = GL_TRUE;
|
||||||
|
|
||||||
|
if (_glfwPlatformExtensionSupported("GLX_EXT_framebuffer_sRGB"))
|
||||||
|
_glfw.glx.EXT_framebuffer_sRGB = GL_TRUE;
|
||||||
|
|
||||||
if (_glfwPlatformExtensionSupported("GLX_ARB_create_context"))
|
if (_glfwPlatformExtensionSupported("GLX_ARB_create_context"))
|
||||||
{
|
{
|
||||||
_glfw.glx.CreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)
|
_glfw.glx.CreateContextAttribsARB = (PFNGLXCREATECONTEXTATTRIBSARBPROC)
|
||||||
|
@ -81,6 +81,7 @@ typedef struct _GLFWlibraryGLX
|
|||||||
GLboolean MESA_swap_control;
|
GLboolean MESA_swap_control;
|
||||||
GLboolean ARB_multisample;
|
GLboolean ARB_multisample;
|
||||||
GLboolean ARB_framebuffer_sRGB;
|
GLboolean ARB_framebuffer_sRGB;
|
||||||
|
GLboolean EXT_framebuffer_sRGB;
|
||||||
GLboolean ARB_create_context;
|
GLboolean ARB_create_context;
|
||||||
GLboolean ARB_create_context_profile;
|
GLboolean ARB_create_context_profile;
|
||||||
GLboolean ARB_create_context_robustness;
|
GLboolean ARB_create_context_robustness;
|
||||||
|
@ -61,6 +61,8 @@ static void initWGLExtensions(_GLFWwindow* window)
|
|||||||
_glfwPlatformExtensionSupported("WGL_ARB_multisample");
|
_glfwPlatformExtensionSupported("WGL_ARB_multisample");
|
||||||
window->wgl.ARB_framebuffer_sRGB =
|
window->wgl.ARB_framebuffer_sRGB =
|
||||||
_glfwPlatformExtensionSupported("WGL_ARB_framebuffer_sRGB");
|
_glfwPlatformExtensionSupported("WGL_ARB_framebuffer_sRGB");
|
||||||
|
window->wgl.EXT_framebuffer_sRGB =
|
||||||
|
_glfwPlatformExtensionSupported("WGL_EXT_framebuffer_sRGB");
|
||||||
window->wgl.ARB_create_context =
|
window->wgl.ARB_create_context =
|
||||||
_glfwPlatformExtensionSupported("WGL_ARB_create_context");
|
_glfwPlatformExtensionSupported("WGL_ARB_create_context");
|
||||||
window->wgl.ARB_create_context_profile =
|
window->wgl.ARB_create_context_profile =
|
||||||
@ -175,7 +177,8 @@ static GLboolean choosePixelFormat(_GLFWwindow* window,
|
|||||||
if (window->wgl.ARB_multisample)
|
if (window->wgl.ARB_multisample)
|
||||||
u->samples = getPixelFormatAttrib(window, n, WGL_SAMPLES_ARB);
|
u->samples = getPixelFormatAttrib(window, n, WGL_SAMPLES_ARB);
|
||||||
|
|
||||||
if (window->wgl.ARB_framebuffer_sRGB)
|
if (window->wgl.ARB_framebuffer_sRGB ||
|
||||||
|
window->wgl.EXT_framebuffer_sRGB)
|
||||||
{
|
{
|
||||||
if (getPixelFormatAttrib(window, n, WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB))
|
if (getPixelFormatAttrib(window, n, WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB))
|
||||||
u->sRGB = GL_TRUE;
|
u->sRGB = GL_TRUE;
|
||||||
@ -543,9 +546,13 @@ int _glfwAnalyzeContext(const _GLFWwindow* window,
|
|||||||
if (fbconfig->sRGB)
|
if (fbconfig->sRGB)
|
||||||
{
|
{
|
||||||
// sRGB is not a hard constraint, so do nothing if it's not supported
|
// sRGB is not a hard constraint, so do nothing if it's not supported
|
||||||
if (window->wgl.ARB_framebuffer_sRGB && window->wgl.ARB_pixel_format)
|
if ((window->wgl.ARB_framebuffer_sRGB ||
|
||||||
|
window->wgl.EXT_framebuffer_sRGB) &&
|
||||||
|
window->wgl.ARB_pixel_format)
|
||||||
|
{
|
||||||
required = GL_TRUE;
|
required = GL_TRUE;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (required)
|
if (required)
|
||||||
return _GLFW_RECREATION_REQUIRED;
|
return _GLFW_RECREATION_REQUIRED;
|
||||||
|
@ -55,6 +55,7 @@ typedef struct _GLFWcontextWGL
|
|||||||
GLboolean EXT_swap_control;
|
GLboolean EXT_swap_control;
|
||||||
GLboolean ARB_multisample;
|
GLboolean ARB_multisample;
|
||||||
GLboolean ARB_framebuffer_sRGB;
|
GLboolean ARB_framebuffer_sRGB;
|
||||||
|
GLboolean EXT_framebuffer_sRGB;
|
||||||
GLboolean ARB_pixel_format;
|
GLboolean ARB_pixel_format;
|
||||||
GLboolean ARB_create_context;
|
GLboolean ARB_create_context;
|
||||||
GLboolean ARB_create_context_profile;
|
GLboolean ARB_create_context_profile;
|
||||||
|
Loading…
Reference in New Issue
Block a user