Program#
- class moderngl.Program#
Create#
- Context.program(*, vertex_shader: str, fragment_shader: Optional[str] = None, geometry_shader: Optional[str] = None, tess_control_shader: Optional[str] = None, tess_evaluation_shader: Optional[str] = None, varyings: Tuple[str, ...] = (), fragment_outputs: Optional[Dict[str, int]] = None, varyings_capture_mode: str = 'interleaved') Program
Methods#
- Program.get(key: str, default: Any) Union[Uniform, UniformBlock, Subroutine, Attribute, Varying] #
- Program.__getitem__(key: str) Union[Uniform, UniformBlock, Subroutine, Attribute, Varying] #
- Program.__setitem__(key: str, value: Any) None #
- Program.__iter__() Generator[str, None, None] #
- Program.__eq__(value, /)#
Return self==value.
- Program.release() None #
Attributes#
- Program.geometry_input#
- Program.geometry_output#
- Program.geometry_vertices#
- Program.subroutines#
- Program.glo#
- Program.mglo#
- Program.extra#
- Program.is_transform#
- Program.ctx#
Examples#
A simple program designed for rendering
1my_render_program = ctx.program(
2 vertex_shader='''
3 #version 330
4
5 in vec2 vert;
6
7 void main() {
8 gl_Position = vec4(vert, 0.0, 1.0);
9 }
10 ''',
11 fragment_shader='''
12 #version 330
13
14 out vec4 color;
15
16 void main() {
17 color = vec4(0.3, 0.5, 1.0, 1.0);
18 }
19 ''',
20)
A simple program designed for transforming
1my_transform_program = ctx.program(
2 vertex_shader='''
3 #version 330
4
5 in vec4 vert;
6 out float vert_length;
7
8 void main() {
9 vert_length = length(vert);
10 }
11 ''',
12 varyings=['vert_length']
13)