3DCG

Python3で「OpenGL」を学ぶ 「ModernGL」Programを作成

ModernGLは標準的なプロッティングライブラリとは異なり、独自のシェーダプログラムを定義してレンダリングすることができる。

これはデータをどのようにレンダリングするかについての自由度を提供する。

ここでは、入力された頂点座標をそのままスクリーン座標に渡すサンプルプログラムを紹介する。

スクリーン座標は、x 軸と y 軸に対して [-1, 1]、[-1, 1] の範囲になり、(-1, -1)点は画面の左下隅。

座標系(引用:moderngl Program)

また、プログラムではカラー情報を処理する。

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;
}

参考にした記事はこちら