demosys.context.glfw.Window

demosys.context.glfw.Window

Window implementation using pyGLFW

demosys.context.glfw.Keys

Namespace defining glfw specific keys constants

Methods

Window.__init__()

Initializes glfw, sets up key and mouse events and creates a moderngl.Context using the context glfw createad.

Using the glfw window requires glfw binaries and pyGLFW.

Window.use()

Bind the window framebuffer making it the current render target

Window.swap_buffers()

Swaps buffers, incement the framecounter and pull events.

Window.resize(width, height)

Sets the new size and buffer size internally

Window.close()

Set the window closing state in glfw

Window.should_close()

Ask glfw is the window should be closed

Window.terminate()

Terminates the glfw library

Window.key_event_callback(window, key, scancode, action, mods)

Key event callback for glfw. Translates and forwards keyboard event to keyboard_event()

Parameters:
  • window – Window event origin
  • key – The key that was pressed or released.
  • scancode – The system-specific scancode of the key.
  • action – GLFW_PRESS, GLFW_RELEASE or GLFW_REPEAT
  • mods – Bit field describing which modifier keys were held down.
Window.mouse_event_callback(window, xpos, ypos)

Mouse event callback from glfw. Translates the events forwarding them to cursor_event().

Parameters:
  • window – The window
  • xpos – viewport x pos
  • ypos – viewport y pos
Window.window_resize_callback(window, width, height)

Window resize callback for glfw

Parameters:
  • window – The window
  • width – New width
  • height – New height
Window.poll_events()

Poll events from glfw

Window.check_glfw_version()

Ensure glfw library version is compatible

Other Inherited Methods

Window.draw(current_time, frame_time)

Draws a frame. Internally it calls the configured timeline’s draw method.

Parameters:
  • current_time (float) – The current time (preferrably always from the configured timer class)
  • frame_time (float) – The duration of the previous frame in seconds
Window.clear()

Clear the window buffer

Window.clear_values(red=0.0, green=0.0, blue=0.0, alpha=0.0, depth=1.0)

Sets the clear values for the window buffer.

Parameters:
  • red (float) – red compoent
  • green (float) – green compoent
  • blue (float) – blue compoent
  • alpha (float) – alpha compoent
  • depth (float) – depth value
Window.keyboard_event(key, action, modifier)

Handles the standard keyboard events such as camera movements, taking a screenshot, closing the window etc.

Can be overriden add new keyboard events. Ensure this method is also called if you want to keep the standard features.

Parameters:
  • key – The key that was pressed or released
  • action – The key action. Can be ACTION_PRESS or ACTION_RELEASE
  • modifier – Modifiers such as holding shift or ctrl
Window.cursor_event(x, y, dx, dy)

The standard mouse movement event method. Can be overriden to add new functionality. By default this feeds the system camera with new values.

Parameters:
  • x – The current mouse x position
  • y – The current mouse y position
  • dx – Delta x postion (x position difference from the previous event)
  • dy – Delta y postion (y position difference from the previous event)
Window.print_context_info()

Prints moderngl context info.

Window.set_default_viewport()

Calculates the viewport based on the configured aspect ratio in settings. Will add black borders if the window do not match the viewport.

Attributes

Window.size

(width, height) tuple containing the window size.

Note that for certain displays we rely on buffer_size() to get the actual window buffer size. This is fairly common for retina and 4k displays where the UI scale is > 1.0

Window.buffer_size

(width, heigh) buffer size of the window.

This is the actual buffer size of the window taking UI scale into account. A 1920 x 1080 window running in an environment with UI scale 2.0 would have a 3840 x 2160 window buffer.

Window.keys = <class 'demosys.context.glfw.keys.Keys'>
Window.min_glfw_version = (3, 2, 1)

The minimum glfw version required