ModernGLは標準的なプロッティングライブラリとは異なり、独自のシェーダプログラムを定義してレンダリングすることができる。
これはデータをどのようにレンダリングするかについての自由度を提供する。
ここでは、入力された頂点座標をそのままスクリーン座標に渡すサンプルプログラムを紹介する。
スクリーン座標は、x 軸と y 軸に対して [-1, 1]、[-1, 1] の範囲になり、(-1, -1)点は画面の左下隅。
また、プログラムではカラー情報を処理する。
import moderngl
ctx = moderngl.create_standalone_context()
prog = ctx.program(
vertex_shader='''
#version 330
in vec2 in_vert;
in vec3 in_color;
out vec3 v_color;
void main() {
v_color = in_color;
gl_Position = vec4(in_vert, 0.0, 1.0);
}
''',
fragment_shader='''
#version 330
in vec3 v_color;
out vec3 f_color;
void main() {
f_color = v_color;
}
''',
)
Vertex Shader
in vec2 in_vert;
in vec3 in_color;
out vec3 v_color;
void main() {
v_color = in_color;
gl_Position = vec4(in_vert, 0.0, 1.0);
}
Fragment Shader
in vec3 v_color;
out vec3 f_color;
void main() {
f_color = v_color;
}
参考にした記事はこちら。