3DCG

Python3で「OpenGL」を学ぶ 「ModernGL」Examples

ModernGLのリポジトリにある、サンプル集 moderngl/examples/ を動作させてみる。

必要なものをインストール

pip install -r examples/requirements.txt

# moderngl-window も使うためインストールが必要
pip install moderngl-window

実行例

すべての例は、ウィンドウの作成とリソースの読み込みを可能な限りシンプルにするために、moderngl-window を使用する。すべてのサポートされているプラットフォームとカバーされていることを保証している。例は、Windows、Linux、OS X上ですぐに動作するはず。

# フルスクリーン, 8x MSAA, マウスカーソルを消す, vsyncを有効な状態でサンプルを実行
python basic_alpha_blending.py --fullscreen --samples 8 --cursor off --vsync on

オプション

-h, --help このヘルプメッセージを表示
wnd {glfw,headless,pygame2,pyglet,pyqt5,pyside2,sdl2,tk}, --window {glfw,headless,pygame2,pyglet,pyqt5,pyside2,sdl2,tk}, --window {glfw,headless,pygame2,pyglet,pyqt5,pyside2,sdl2,tk}.
                        使用するウィンドウタイプのラベル
-fs, --fullscreen フルスクリーンでウィンドウを開く
-vs VSYNC, --vsync VSYNC
                      vsync を有効 / 無効
-r RESIZABLE, --resizable RESIZABLE
                      ウィンドウのリサイズを有効 / 無効
-s SAMPLES, -samples SAMPLES
                      使用するサンプル数を指定(マルチサンプリング)
-c CURSOR, --cursor CURSOR
                      マウスカーソルの表示を有効 / 無効
--size SIZE ウィンドウサイズ
--size_mult SIZE_MULT
                      ウィンドウサイズの乗数でスケール

実行例

python basic_alpha_blending.py --samples 8 --vsync on

TypeError: init() got an unexpected keyword argument ‘file_drops’

以下のようなエラーが出るときは、moderngl-window のインストールがされているか確認。

moderngl\examples>python basic_alpha_blending.py --fullscreen --samples 8 --cursor off --vsync on
2020-11-01 14:44:54,941 - moderngl_window - INFO - Attempting to load window class: moderngl_window.context.pyglet.Window
Traceback (most recent call last):
  File "basic_alpha_blending.py", line 74, in <module>
    AlphaBlending.run()
  File "moderngl\examples\ported\_example.py", line 21, in run
    mglw.run_window_config(cls)
  File "\lib\site-packages\moderngl_window\__init__.py", line 197, in run_window_config
    cursor=show_cursor if show_cursor is not None else True,
  File "\lib\site-packages\moderngl_window\context\pyglet\window.py", line 59, in __init__
    file_drops=True and platform.system() != "Darwin"
  File "\lib\site-packages\pyglet\window\win32\__init__.py", line 129, in __init__
    super(Win32Window, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'file_drops'