|
|
|
@ -36,89 +36,45 @@ |
|
|
|
|
//
|
|
|
|
|
static void initWGLExtensions(_GLFWwindow* window) |
|
|
|
|
{ |
|
|
|
|
// This needs to include every function pointer loaded below
|
|
|
|
|
window->wgl.SwapIntervalEXT = NULL; |
|
|
|
|
window->wgl.GetPixelFormatAttribivARB = NULL; |
|
|
|
|
window->wgl.GetExtensionsStringARB = NULL; |
|
|
|
|
window->wgl.GetExtensionsStringEXT = NULL; |
|
|
|
|
window->wgl.CreateContextAttribsARB = NULL; |
|
|
|
|
|
|
|
|
|
// This needs to include every extension used below except for
|
|
|
|
|
// WGL_ARB_extensions_string and WGL_EXT_extensions_string
|
|
|
|
|
window->wgl.ARB_multisample = GL_FALSE; |
|
|
|
|
window->wgl.ARB_framebuffer_sRGB = GL_FALSE; |
|
|
|
|
window->wgl.ARB_create_context = GL_FALSE; |
|
|
|
|
window->wgl.ARB_create_context_profile = GL_FALSE; |
|
|
|
|
window->wgl.EXT_create_context_es2_profile = GL_FALSE; |
|
|
|
|
window->wgl.ARB_create_context_robustness = GL_FALSE; |
|
|
|
|
window->wgl.EXT_swap_control = GL_FALSE; |
|
|
|
|
window->wgl.ARB_pixel_format = GL_FALSE; |
|
|
|
|
window->wgl.ARB_context_flush_control = GL_FALSE; |
|
|
|
|
|
|
|
|
|
// Functions for WGL_EXT_extension_string
|
|
|
|
|
// NOTE: These are needed by _glfwPlatformExtensionSupported
|
|
|
|
|
window->wgl.GetExtensionsStringEXT = (PFNWGLGETEXTENSIONSSTRINGEXTPROC) |
|
|
|
|
wglGetProcAddress("wglGetExtensionsStringEXT"); |
|
|
|
|
if (!window->wgl.GetExtensionsStringEXT) |
|
|
|
|
{ |
|
|
|
|
window->wgl.GetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) |
|
|
|
|
wglGetProcAddress("wglGetExtensionsStringARB"); |
|
|
|
|
if (!window->wgl.GetExtensionsStringARB) |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_multisample")) |
|
|
|
|
window->wgl.ARB_multisample = GL_TRUE; |
|
|
|
|
|
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_framebuffer_sRGB")) |
|
|
|
|
window->wgl.ARB_framebuffer_sRGB = GL_TRUE; |
|
|
|
|
|
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_create_context")) |
|
|
|
|
{ |
|
|
|
|
window->wgl.CreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC) |
|
|
|
|
wglGetProcAddress("wglCreateContextAttribsARB"); |
|
|
|
|
|
|
|
|
|
if (window->wgl.CreateContextAttribsARB) |
|
|
|
|
window->wgl.ARB_create_context = GL_TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (window->wgl.ARB_create_context) |
|
|
|
|
{ |
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_create_context_profile")) |
|
|
|
|
window->wgl.ARB_create_context_profile = GL_TRUE; |
|
|
|
|
} |
|
|
|
|
window->wgl.GetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) |
|
|
|
|
wglGetProcAddress("wglGetExtensionsStringARB"); |
|
|
|
|
|
|
|
|
|
if (window->wgl.ARB_create_context && |
|
|
|
|
window->wgl.ARB_create_context_profile) |
|
|
|
|
{ |
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_EXT_create_context_es2_profile")) |
|
|
|
|
window->wgl.EXT_create_context_es2_profile = GL_TRUE; |
|
|
|
|
} |
|
|
|
|
// Functions for WGL_ARB_create_context
|
|
|
|
|
window->wgl.CreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC) |
|
|
|
|
wglGetProcAddress("wglCreateContextAttribsARB"); |
|
|
|
|
|
|
|
|
|
if (window->wgl.ARB_create_context) |
|
|
|
|
{ |
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_create_context_robustness")) |
|
|
|
|
window->wgl.ARB_create_context_robustness = GL_TRUE; |
|
|
|
|
} |
|
|
|
|
// Functions for WGL_EXT_swap_control
|
|
|
|
|
window->wgl.SwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) |
|
|
|
|
wglGetProcAddress("wglSwapIntervalEXT"); |
|
|
|
|
|
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_EXT_swap_control")) |
|
|
|
|
{ |
|
|
|
|
window->wgl.SwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) |
|
|
|
|
wglGetProcAddress("wglSwapIntervalEXT"); |
|
|
|
|
// Functions for WGL_ARB_pixel_format
|
|
|
|
|
window->wgl.GetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC) |
|
|
|
|
wglGetProcAddress("wglGetPixelFormatAttribivARB"); |
|
|
|
|
|
|
|
|
|
if (window->wgl.SwapIntervalEXT) |
|
|
|
|
window->wgl.EXT_swap_control = GL_TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_pixel_format")) |
|
|
|
|
{ |
|
|
|
|
window->wgl.GetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC) |
|
|
|
|
wglGetProcAddress("wglGetPixelFormatAttribivARB"); |
|
|
|
|
|
|
|
|
|
if (window->wgl.GetPixelFormatAttribivARB) |
|
|
|
|
window->wgl.ARB_pixel_format = GL_TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (_glfwPlatformExtensionSupported("WGL_ARB_context_flush_control")) |
|
|
|
|
window->wgl.ARB_context_flush_control = GL_TRUE; |
|
|
|
|
// This needs to include every extension used below except for
|
|
|
|
|
// WGL_ARB_extensions_string and WGL_EXT_extensions_string
|
|
|
|
|
window->wgl.ARB_multisample = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_multisample"); |
|
|
|
|
window->wgl.ARB_framebuffer_sRGB = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_framebuffer_sRGB"); |
|
|
|
|
window->wgl.ARB_create_context = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_create_context"); |
|
|
|
|
window->wgl.ARB_create_context_profile = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_create_context_profile"); |
|
|
|
|
window->wgl.EXT_create_context_es2_profile = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_EXT_create_context_es2_profile"); |
|
|
|
|
window->wgl.ARB_create_context_robustness = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_create_context_robustness"); |
|
|
|
|
window->wgl.EXT_swap_control = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_EXT_swap_control"); |
|
|
|
|
window->wgl.ARB_pixel_format = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_pixel_format"); |
|
|
|
|
window->wgl.ARB_context_flush_control = |
|
|
|
|
_glfwPlatformExtensionSupported("WGL_ARB_context_flush_control"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Returns the specified attribute of the specified pixel format
|
|
|
|
|