Professional Documents
Culture Documents
Setting Display Modes
Setting Display Modes
org
/docs/tut/DisplayModes.html
Author
Pete Shinners
Contact
pete@shinners.org
Introduction¶
Setting the display mode in pygame is an easier task than with most
graphic libraries.
The advantage is if
your display mode is not available,
pygame will emulate the display mode that you asked for.
Pygame will
select a display resolution and color depth that best matches
the settings you have requested,
then allow
you to access the display with the format you have requested.
In reality, since the
pygame.displaypygame module to control the display window and screen module is
a binding around
the SDL library, SDL is really doing all this work.
There are advantages and disadvantages to setting the display mode in this
manner.
The advantage is
that if your game requires a specific display mode,
your game will run on platforms that do not support
your requirements.
It also makes life easier when you're getting something started,
it is always easy to go
back later and make the mode selection a little more
particular.
The disadvantage is that what you
request is not always what you will get.
There is also a performance penalty when the display mode must
be emulated.
This tutorial will help you understand the different methods for querying
the platforms
display capabilities, and setting the display mode for your game.
Setting Basics¶
The first thing to learn about is how to actually set the current display mode.
The display mode may be
set at any time after the pygame.displaypygame module to control the display window and screen
module has been initialized.
If you have previously set the display mode,
setting it again will change the
current mode.
Setting the display mode is handled with the function
pygame.display.set_mode((width, height), flags, depth)Initialize a window or screen for
display.
The only required argument in this function is a sequence containing
the width and height of the
new display mode.
The depth flag is the requested bits per pixel for the surface.
If the given depth is 8,
1/4
pygame will create a color-mapped surface.
When given a higher bit depth, pygame will use a packed
color mode.
Much more information about depths and color modes can be found in the
documentation for
the display and surface modules.
The default value for depth is 0.
When given an argument of 0, pygame
will select the best bit depth to use,
usually the same as the system's current bit depth.
The flags
argument lets you control extra features for the display mode.
Again, more information about this is found
in the pygame reference documents.
How to Decide¶
So how do you select a display mode that is going to work best with your
graphic resources and the
platform your game is running on?
There are several methods for gathering information about the display
device.
All of these methods must be called after the display module has been
initialized, but you likely
want to call them before setting the display mode.
First, pygame.display.Info()Create a video
display information object
will return a special object type of VidInfo,
which can tell you a lot about the
graphics driver capabilities.
The function
pygame.display.list_modes(depth, flags)Get list of
available fullscreen modes
can be used to find the supported graphic modes by the system.
pygame.display.mode_ok((width, height), flags, depth)Pick the best color depth for a
display mode takes the same arguments as
set_mode(),
but returns the closest matching bit depth to
the one you request.
Lastly, pygame.display.get_driver()Get the name of the pygame display
backend
will return the name of the graphics driver selected by pygame.
Functions¶
These are the routines you can use to determine the most appropriate
display mode.
You can find more
information about these functions in the display module
documentation.
2/4
pygame.display.list_modes(depth, flags)Get list of available fullscreen modes
>>> pygame.display.init()
>>> info = pygame.display.Info()
>>> print(info)
<VideoInfo(hw = 0, wm = 1,video_mem = 0
>
You can test all these flags as simply members of the VidInfo object.
Examples¶
Here are some examples of different methods to init the graphics display.
They should help you get an
idea of how to go about setting your display mode.
>>> #give me the best depth with a 640 x 480 windowed display
... else:
... print('Found Resolution:', modes[0])
3/4
>>> if pygame.display.mode_ok((800, 600), 0, 8) != 8:
... print('Can only work with an 8-bit display, sorry')
... else:
... pygame.display.set_mode((800, 600), 0, 8)
4/4