Multi-monitor guide

Table of Contents

Monitor objects

The GLFWmonitor object represents a currently connected monitor.

Retrieving monitors

The primary monitor is returned by glfwGetPrimaryMonitor. It is usually the user's preferred monitor and the one with global UI elements like task bar or menu bar.

You can retrieve all currently connected monitors with glfwGetMonitors.

int count;
GLFWmonitor** monitors = glfwGetMonitors(&count);

Retrieving video modes

Although GLFW generally does a good job at selecting a suitable video mode for you when you open a full screen window, it is sometimes useful to know exactly which modes are available on a certain system. For example, you may want to present the user with a list of video modes to select from. To get a list of available video modes, you can use the function glfwGetVideoModes.

int count;
GLFWvidmode* modes = glfwGetVideoModes(monitor, &count);

To get the current video mode of a monitor call glfwGetVideoMode.

const GLFWvidmode* mode = glfwGetVideoMode(monitor);

Monitor physical size

The physical size in millimetres of a monitor, or an approximation of it, can be retrieved with glfwGetMonitorPhysicalSize.

int widthMM, heightMM;
glfwGetMonitorPhysicalSize(monitor, &widthMM, &heightMM);

This can, for example, be used together with the current video mode to calculate the DPI of a monitor.

const double dpi = mode->width / (widthMM / 25.4);

Monitor name

The name of a monitor is returned by glfwGetMonitorName.

const char* name = glfwGetMonitorName(monitor);

The monitor name is a regular C string using the UTF-8 encoding. Note that monitor names are not guaranteed to be unique.

Monitor gamma ramp

The gamma ramp of a monitor can be set with glfwSetGammaRamp, which accepts a monitor handle and a pointer to a GLFWgammaramp structure.

glfwSetGammaRamp(monitor, &ramp);

The current gamma ramp for a monitor is returned by glfwGetGammaRamp.

const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor);

If you wish to set a regular gamma ramp, you can have GLFW calculate it for you from the desired exponent with glfwSetGamma, which in turn calls glfwSetGammaRamp with the resulting ramp.

glfwSetGamma(monitor, 1.0);