Context reference

Overview

This is the reference documentation for OpenGL and OpenGL ES context related functions.

For more task-oriented information, see the context_guide.

// typedefs

typedef void (*GLFWglproc)(void);

// global functions

GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);
GLFWAPI GLFWwindow* glfwGetCurrentContext(void);
GLFWAPI void glfwSwapInterval(int interval);
GLFWAPI int glfwExtensionSupported(const char* extension);
GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);

Typedefs

typedef void (*GLFWglproc)(void)

Client API function pointer type.

Generic function pointer used for returning client API function pointers without forcing a cast from a regular pointer.

Added in version 3.0.

See also:

context_glext

glfwGetProcAddress

Global Functions

GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window)

Makes the context of the specified window current for the calling thread.

This function makes the OpenGL or OpenGL ES context of the specified window current on the calling thread. A context can only be made current on a single thread at a time and each thread can have only a single current context at a time.

By default, making a context non-current implicitly forces a pipeline flush. On machines that support GL_KHR_context_flush_control, you can control whether a context performs this flush by setting the GLFW_CONTEXT_RELEASE_BEHAVIOR window hint.

The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a GLFW_NO_WINDOW_CONTEXT error.

@errors Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_WINDOW_CONTEXT and GLFW_PLATFORM_ERROR.

@thread_safety This function may be called from any thread.

Added in version 3.0.

Parameters:

window

The window whose context to make current, or NULL to detach the current context.

See also:

context_current

glfwGetCurrentContext

GLFWAPI GLFWwindow* glfwGetCurrentContext(void)

Returns the window whose context is current on the calling thread.

This function returns the window whose OpenGL or OpenGL ES context is current on the calling thread.

@errors Possible errors include GLFW_NOT_INITIALIZED.

@thread_safety This function may be called from any thread.

Added in version 3.0.

Returns:

The window whose context is current, or NULL if no window’s context is current.

See also:

context_current

glfwMakeContextCurrent

GLFWAPI void glfwSwapInterval(int interval)

Sets the swap interval for the current context.

This function sets the swap interval for the current OpenGL or OpenGL ES context, i.e. the number of screen updates to wait from the time glfwSwapBuffers was called before swapping the buffers and returning. This is sometimes called vertical synchronization, vertical retrace synchronization or just vsync.

Contexts that support either of the WGL_EXT_swap_control_tear and GLX_EXT_swap_control_tear extensions also accept negative swap intervals, which allow the driver to swap even if a frame arrives a little bit late. You can check for the presence of these extensions using glfwExtensionSupported. For more information about swap tearing, see the extension specifications.

A context must be current on the calling thread. Calling this function without a current context will cause a GLFW_NO_CURRENT_CONTEXT error.

This function does not apply to Vulkan. If you are rendering with Vulkan, see the present mode of your swapchain instead.

@errors Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_CURRENT_CONTEXT and GLFW_PLATFORM_ERROR.

This function is not called during context creation, leaving the swap interval set to whatever is the default on that platform. This is done because some swap interval extensions used by GLFW do not allow the swap interval to be reset to zero once it has been set to a non-zero value.

Some GPU drivers do not honor the requested swap interval, either because of a user setting that overrides the application’s request or due to bugs in the driver.

@thread_safety This function may be called from any thread.

Added in version 1.0.

Parameters:

interval

The minimum number of screen updates to wait for until the buffers are swapped by glfwSwapBuffers.

See also:

buffer_swap

glfwSwapBuffers

GLFWAPI int glfwExtensionSupported(const char* extension)

Returns whether the specified extension is available.

This function returns whether the specified API extension is supported by the current OpenGL or OpenGL ES context. It searches both for client API extension and context creation API extensions.

A context must be current on the calling thread. Calling this function without a current context will cause a GLFW_NO_CURRENT_CONTEXT error.

As this functions retrieves and searches one or more extension strings each call, it is recommended that you cache its results if it is going to be used frequently. The extension strings will not change during the lifetime of a context, so there is no danger in doing this.

This function does not apply to Vulkan. If you are using Vulkan, see glfwGetRequiredInstanceExtensions, vkEnumerateInstanceExtensionProperties and vkEnumerateDeviceExtensionProperties instead.

@errors Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_CURRENT_CONTEXT, GLFW_INVALID_VALUE and GLFW_PLATFORM_ERROR.

@thread_safety This function may be called from any thread.

Added in version 1.0.

Parameters:

extension

The ASCII encoded name of the extension.

Returns:

GLFW_TRUE if the extension is available, or GLFW_FALSE otherwise.

See also:

context_glext

glfwGetProcAddress

GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname)

Returns the address of the specified function for the current context.

This function returns the address of the specified OpenGL or OpenGL ES core or extension function, if it is supported by the current context.

A context must be current on the calling thread. Calling this function without a current context will cause a GLFW_NO_CURRENT_CONTEXT error.

This function does not apply to Vulkan. If you are rendering with Vulkan, see glfwGetInstanceProcAddress, vkGetInstanceProcAddr and vkGetDeviceProcAddr instead.

@errors Possible errors include GLFW_NOT_INITIALIZED, GLFW_NO_CURRENT_CONTEXT and GLFW_PLATFORM_ERROR.

The address of a given function is not guaranteed to be the same between contexts.

This function may return a non- NULL address despite the associated version or extension not being available. Always check the context version or extension string first.

@pointer_lifetime The returned function pointer is valid until the context is destroyed or the library is terminated.

@thread_safety This function may be called from any thread.

Added in version 1.0.

Parameters:

procname

The ASCII encoded name of the function.

Returns:

The address of the function, or NULL if an error occurred.

See also:

context_glext

glfwExtensionSupported