Context¶
-
class
moderngl.
Context
¶ Class exposing OpenGL features. ModernGL objects can be created from this class.
Create¶
-
moderngl.
create_context
(require=None) → Context¶ Create a ModernGL context by loading OpenGL functions from an existing OpenGL context. An OpenGL context must exists. If rendering is done without a window please use the
create_standalone_context()
instead.Keyword Arguments: require (int) – OpenGL version code. Returns: Context
object
ModernGL Objects¶
-
Context.
program
(vertex_shader, fragment_shader=None, geometry_shader=None, tess_control_shader=None, tess_evaluation_shader=None, varyings=()) → Program¶ Create a
Program
object.Only linked programs will be returned.
A single shader in the shaders parameter is also accepted. The varyings are only used when a transform program is created.
Parameters: - shaders (list) – A list of
Shader
objects. - varyings (list) – A list of varying names.
Returns: Program
object- shaders (list) – A list of
-
Context.
simple_vertex_array
(program, buffer, *attributes, index_buffer=None, index_element_size=4) → VertexArray¶ Create a
VertexArray
object.Parameters: Keyword Arguments: - index_element_size (int) – byte size of each index element, 1, 2 or 4.
- index_buffer (Buffer) – An index buffer.
Returns: VertexArray
object
-
Context.
vertex_array
(program, content, index_buffer=None, index_element_size=4, skip_errors=False) → VertexArray¶ Create a
VertexArray
object.Parameters: Keyword Arguments: - index_element_size (int) – byte size of each index element, 1, 2 or 4.
- skip_errors (bool) – Ignore skip_errors varyings.
Returns: VertexArray
object
-
Context.
buffer
(data=None, reserve=0, dynamic=False) → Buffer¶ Create a
Buffer
object.Parameters: data (bytes) – Content of the new buffer.
Keyword Arguments: - reserve (int) – The number of bytes to reserve.
- dynamic (bool) – Treat buffer as dynamic.
Returns: Buffer
object
-
Context.
texture
(size, components, data=None, samples=0, alignment=1, dtype='f1') → Texture¶ Create a
Texture
object.Parameters: - size (tuple) – The width and height of the texture.
- components (int) – The number of components 1, 2, 3 or 4.
- data (bytes) – Content of the texture.
Keyword Arguments: - samples (int) – The number of samples. Value 0 means no multisample format.
- alignment (int) – The byte alignment 1, 2, 4 or 8.
- dtype (str) – Data type.
Returns: Texture
object
-
Context.
depth_texture
(size, data=None, samples=0, alignment=4) → Texture¶ Create a
Texture
object.Parameters: - size (tuple) – The width and height of the texture.
- data (bytes) – Content of the texture.
Keyword Arguments: - samples (int) – The number of samples. Value 0 means no multisample format.
- alignment (int) – The byte alignment 1, 2, 4 or 8.
Returns: Texture
object
-
Context.
texture3d
(size, components, data=None, alignment=1, dtype='f1') → Texture3D¶ Create a
Texture3D
object.Parameters: - size (tuple) – The width, height and depth of the texture.
- components (int) – The number of components 1, 2, 3 or 4.
- data (bytes) – Content of the texture.
Keyword Arguments: - alignment (int) – The byte alignment 1, 2, 4 or 8.
- dtype (str) – Data type.
Returns: Texture3D
object
-
Context.
texture_array
(size, components, data=None, alignment=1, dtype='f1') → TextureArray¶ Create a
TextureArray
object.Parameters: - size (tuple) – The width, height and layers of the texture.
- components (int) – The number of components 1, 2, 3 or 4.
- data (bytes) – Content of the texture.
Keyword Arguments: - alignment (int) – The byte alignment 1, 2, 4 or 8.
- dtype (str) – Data type.
Returns: Texture3D
object
-
Context.
texture_cube
(size, components, data=None, alignment=1, dtype='f1') → TextureCube¶ Create a
TextureCube
object.Parameters: - size (tuple) – The width, height and depth of the texture.
- components (int) – The number of components 1, 2, 3 or 4.
- data (bytes) – Content of the texture.
Keyword Arguments: - alignment (int) – The byte alignment 1, 2, 4 or 8.
- dtype (str) – Data type.
Returns: TextureCube
object
-
Context.
simple_framebuffer
(size, components=4, samples=0, dtype='f1') → Framebuffer¶ A
Framebuffer
is a collection of buffers that can be used as the destination for rendering. The buffers for Framebuffer objects reference images from either Textures or Renderbuffers.Parameters: - size (tuple) – The width and height of the renderbuffer.
- components (int) – The number of components 1, 2, 3 or 4.
Keyword Arguments: - samples (int) – The number of samples. Value 0 means no multisample format.
- dtype (str) – Data type.
Returns: Framebuffer
object
-
Context.
framebuffer
(color_attachments=(), depth_attachment=None) → Framebuffer¶ A
Framebuffer
is a collection of buffers that can be used as the destination for rendering. The buffers for Framebuffer objects reference images from either Textures or Renderbuffers.Parameters: - color_attachments (list) – A list of
Texture
orRenderbuffer
objects. - depth_attachment (Renderbuffer or Texture) – The depth attachment.
Returns: Framebuffer
object- color_attachments (list) – A list of
-
Context.
renderbuffer
(size, components=4, samples=0, dtype='f1') → Renderbuffer¶ Renderbuffer
objects are OpenGL objects that contain images. They are created and used specifically withFramebuffer
objects.Parameters: - size (tuple) – The width and height of the renderbuffer.
- components (int) – The number of components 1, 2, 3 or 4.
Keyword Arguments: - samples (int) – The number of samples. Value 0 means no multisample format.
- dtype (str) – Data type.
Returns: Renderbuffer
object
-
Context.
depth_renderbuffer
(size, samples=0) → Renderbuffer¶ Renderbuffer
objects are OpenGL objects that contain images. They are created and used specifically withFramebuffer
objects.Parameters: size (tuple) – The width and height of the renderbuffer. Keyword Arguments: samples (int) – The number of samples. Value 0 means no multisample format. Returns: Renderbuffer
object
-
Context.
scope
(framebuffer, enable_only=None, textures=(), uniform_buffers=(), storage_buffers=()) → Scope¶ Create a
Scope
object.Parameters: - framebuffer (Framebuffer) – The framebuffer to use when entering.
- enable_only (int) – The enable_only flags to set when entering.
Keyword Arguments: - textures (list) – List of (texture, binding) tuples.
- uniform_buffers (list) – List of (buffer, binding) tuples.
- storage_buffers (list) – List of (buffer, binding) tuples.
-
Context.
query
(samples=False, any_samples=False, time=False, primitives=False) → Query¶ Create a
Query
object.Keyword Arguments: - samples (bool) – Query
GL_SAMPLES_PASSED
or not. - any_samples (bool) – Query
GL_ANY_SAMPLES_PASSED
or not. - time (bool) – Query
GL_TIME_ELAPSED
or not. - primitives (bool) – Query
GL_PRIMITIVES_GENERATED
or not.
- samples (bool) – Query
-
Context.
compute_shader
(source) → ComputeShader¶ A
ComputeShader
is a Shader Stage that is used entirely for computing arbitrary information. While it can do rendering, it is generally used for tasks not directly related to drawing.Parameters: source (str) – The source of the compute shader. Returns: ComputeShader
object
Methods¶
-
Context.
clear
(red=0.0, green=0.0, blue=0.0, alpha=0.0, depth=1.0, viewport=None)¶ Clear the bound framebuffer. By default clears the
screen
.If the viewport is not
None
then scrissor test will be used to clear the given viewport.If the viewport is a 2-tuple it will clear the
(0, 0, width, height)
where(width, height)
is the 2-tuple.If the viewport is a 4-tuple it will clear the given viewport.
Parameters: - red (float) – color component.
- green (float) – color component.
- blue (float) – color component.
- alpha (float) – alpha component.
- depth (float) – depth value.
Keyword Arguments: viewport (tuple) – The viewport.
-
Context.
enable_only
(flags)¶ Enable flags.
moderngl.NOTHING
moderngl.BLEND
moderngl.DEPTH_TEST
moderngl.CULL_FACE
moderngl.RASTERIZER_DISCARD
Parameters: flags (EnableFlag) – The flags to enable. Unset flags will be disabled.
-
Context.
enable
(flags)¶ Enable flags.
For valid flags, please see
enable_only()
.Parameters: flag (int) – The flags to enable.
-
Context.
disable
(flags)¶ Disable flags.
For valid flags, please see
enable_only()
.Parameters: flag (int) – The flags to disable.
-
Context.
finish
()¶ Wait for all drawing commands to finish.
-
Context.
copy_buffer
(dst, src, size=-1, read_offset=0, write_offset=0)¶ Copy buffer content.
Parameters: Keyword Arguments: - read_offset (int) – The read offset.
- write_offset (int) – The write offset.
-
Context.
copy_framebuffer
(dst, src)¶ Copy framebuffer content.
Use this method to:
- blit framebuffers.
- copy framebuffer content into a texture.
- downsample framebuffers. (it will allow to read the framebuffer’s content)
- downsample a framebuffer directly to a texture.
Parameters: - dst (Framebuffer or Texture) – Destination framebuffer or texture.
- src (Framebuffer) – Source framebuffer.
-
Context.
detect_framebuffer
(glo=None) → Framebuffer¶ Detect framebuffer.
Parameters: glo (int) – Framebuffer object. Returns: Framebuffer
object
Attributes¶
-
Context.
line_width
¶ float – Set the default line width.
-
Context.
point_size
¶ float – Set the default point size.
-
Context.
depth_func
¶ int – Set the default depth func.
-
Context.
blend_func
¶ tuple – Set the blend depth func.
-
Context.
viewport
¶ tuple – The viewport.
-
Context.
version_code
¶ int – The OpenGL version code.
-
Context.
screen
¶ Framebuffer – The default framebuffer.
-
Context.
fbo
¶ Framebuffer – The active framebuffer.
-
Context.
front_face
¶ str – The front_face.
-
Context.
wireframe
¶ bool – Wireframe settings for debugging.
-
Context.
max_samples
¶ int – The max samples.
-
Context.
max_integer_samples
¶ int – The max integer samples.
-
Context.
max_texture_units
¶ int – The max texture units.
-
Context.
default_texture_unit
¶ int – The default texture unit.
-
Context.
multisample
¶ bool – Multisample.
-
Context.
patch_vertices
¶ int – The number of vertices that will be used to make up a single patch primitive.
-
Context.
error
¶ str – The result of glGetError() but human readable. This values is provided for debug purposes only.
-
Context.
info
¶ dict – The result of multiple glGet.
Examples¶
ModernGL Context¶
import moderngl
# create a window
ctx = moderngl.create_context()
print(ctx.version_code)
Standalone ModernGL Context¶
import moderngl
ctx = moderngl.create_standalone_context()
print(ctx.version_code)
ContextManager¶
context_manager.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import moderngl
class ContextManager:
ctx = None
@staticmethod
def get_default_context(allow_fallback_standalone_context=True) -> moderngl.Context:
'''
Default context
'''
if ContextManager.ctx is None:
try:
ContextManager.ctx = moderngl.create_context()
except moderngl.Error:
if allow_fallback_standalone_context:
ContextManager.ctx = moderngl.create_standalone_context()
else:
raise
return ContextManager.ctx
|
example.py
1 2 3 4 | from context_manager import ContextManager
ctx = ContextManager.get_default_context()
print(ctx.version_code)
|