Video Displays

Understanding SDL Display Indices

What are display indices, and how do they map to physical monitors?

Abstract art representing computer programming

SDL assigns a numerical index to each connected display. These indices start from 0 and increment for every additional monitor. Display indices are used throughout SDL’s API to refer to specific monitors when querying their properties or creating windows.

Mapping to Physical Monitors

The display index corresponds to the monitor order reported by the operating system. For example, if you have three monitors connected, SDL_GetDisplayName(0) will return the name of the first monitor as recognized by the OS.

You can retrieve the total number of displays using SDL_GetNumVideoDisplays():

int numDisplays = SDL_GetNumVideoDisplays();
std::cout << "Number of displays: "
  << numDisplays << '\n';

Example Use Case

If you want to create a window on the second monitor, use display-specific macros like this:

SDL_CreateWindow("My Window",
                 SDL_WINDOWPOS_CENTERED_DISPLAY(1), 
                 SDL_WINDOWPOS_CENTERED_DISPLAY(1), 
                 800, 600, SDL_WINDOW_SHOWN);

How Indices Can Vary

  • If monitors are reconnected or the OS display order changes, the indices might not correspond to their previous mappings.
  • On multi-GPU setups, displays might appear in different orders depending on which GPU is active.

Display Index Pitfalls

Always verify the number of displays using SDL_GetNumVideoDisplays() to avoid referencing an out-of-bounds index. For example:

if (displayIndex >= SDL_GetNumVideoDisplays()) {
  std::cerr << "Invalid display index: "
    << displayIndex << '\n';
}

By understanding display indices, you can ensure your application works smoothly in multi-monitor environments.

Answers to questions are automatically generated and may not have been reviewed.

sdl2-promo.jpg
Part of the course:

Game Dev with SDL2

Learn C++ and SDL development by creating hands on, practical projects inspired by classic retro games

Free, unlimited access

This course includes:

  • 67 Lessons
  • 100+ Code Samples
  • 91% Positive Reviews
  • Regularly Updated
  • Help and FAQ
Free, Unlimited Access

Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Screenshot from Warhammer: Total War
Screenshot from Tomb Raider
Screenshot from Jedi: Fallen Order
Contact|Privacy Policy|Terms of Use
Copyright © 2024 - All Rights Reserved