ScreenRes
Initializes a graphics mode by specifying horizontal and vertical resolution
Syntax
`
Declare Function ScreenRes ( ByVal width As Integer, ByVal height As Integer, ByVal depth As Integer = 8, ByVal num_pages As Integer = 1, ByVal flags As Integer = 0, ByVal refresh_rate As Integer = 0 ) As Integer
`
Usage
`
ScreenRes width, height [, [depth] [, [num_pages] [, [flags] [, refresh_rate ]]]]
result = ScreenRes( width, height [, [depth] [, [num_pages] [, [flags] [, refresh_rate ]]]] )
`
Parameters
`width`, `height`
The display width and height, respectively. For fullscreen mode, the user should check the availability of the resolution using `ScreenList`.
`depth`
The color depth in bits per pixel. Valid color depths are: `1`, `2`, `4`, `8`, `16` and `32`. Values of `15` and `24` are also allowed as aliases for `16` and `32`, respectively. If omitted, the default is 8 bits per pixel. 8 bits and below will give a palette image. The default palette will be the first `2 ^ depth` colors of the 256-color palette used in `Screen 13`.
`num_pages`
The number of video pages to create, defaults to `1`. (see below)
`flags`
Used to set various properties of the screen, including fullscreen mode and the graphics driver used. (see `Screen` or the standard header "fbgfx.bi" for available flags)
`refresh_rate`
The desired refresh rate of the screen, only has an effect for fullscreen modes, and some systems and drivers only. Defaults to an appropriate value, invalid refresh rates will be ignored.
Return Value
Returns zero (`0`) if successful, or a non-zero error code to indicate a failure. (throws a runtime error)
Description
`ScreenRes` tells the compiler to link the GfxLib and initializes a QB-only, QB-on-GUI or OpenGL graphics mode, depending on the `flags` setting
In non-fullscreen modes, the resolution does not have to match any resolution of the graphics card. Resolutions like `555x111` are possible, GfxLib will create a window of such size. See Platform differences for DOS issues.
The font size in `ScreenRes` modes is set to 8x8 by default. This can be changed by setting the number of text rows/columns, using the `Width` function.
In QB-only modes a dumb window or fullscreen resolution is set, one or more buffers in standard memory are created, console commands are redirected to their graphic versions, a default palette is set and an automatic screen refresh thread is started. QB-like graphics and console statements can be used.
In QB-on-GUI modes one or more buffers in standard memory are created, console commands are redirected to their graphic versions and a default palette is set. QB-like graphics and console statements can be used. It is up to the user to create a window and to refresh it with the contents of the graphics buffers.
In OpenGL modes a dumb window or fullscreen resolution is set, one or more buffers in standard memory are created, and the system's OpenGL library is initialized. From here only OpenGL commands can be used to write to the graphics buffer. QB-like and console commands are forbidden. This mode allows to initialize OpenGL in a portable way.
See the details in `Screen (Graphics)` keyword.
Example
`
' Set the screen mode to 320*200, with 8 bits per pixel
ScreenRes 320, 200, 8
' Draw color bands in a diagonal pattern over the whole screen
For y As Integer = 0 To 200-1
For x As Integer = 0 To 320-1
PSet (x,y),(x + y) And 255
Next x
Next y
' Display the text "Hello World!!" over the lines we've drawn, in the top-left hand corner
Print "Hello world!!"
' Keep the window open until the user presses a key
Sleep
`
Platform Differences

- In DOS, refresh rate setting, and Windowing and OpenGL related switches are not available, see also GfxLib overview

Dialect Differences

- Not available in the -lang qb dialect unless referenced with the alias `__Screenres`.

Differences from QB

- New to FreeBASIC

See also

- `Screen` The QB-like way to set graphics mode
- `ScreenList` Check display modes available for FB GfxLib to use
- `ScreenControl` Select driver and more
- `ScreenLock`
- `ScreenUnlock`
- `ScreenPtr` Semi-low level access
- `ScreenSet`
- `ScreenCopy`
- `ScreenInfo`
- `ScreenGLProc`
- `Internal pixel formats`