VertexArray までを作成の後、結果をレンダリングしてみます。
fbo = ctx.simple_framebuffer((512, 512))
fbo.use()
fbo.clear(0.0, 0.0, 0.0, 1.0)
vao.render(moderngl.LINE_STRIP)
Image.frombytes('RGB', fbo.size, fbo.read(), 'raw', 'RGB', 0, -1).show()
参考にした記事はこちら。
最終的なコード
import moderngl
import numpy as np
from PIL import Image
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;
}
''',
)
x = np.linspace(-1.0, 1.0, 50)
y = np.random.rand(50) - 0.5
r = np.ones(50)
g = np.zeros(50)
b = np.zeros(50)
vertices = np.dstack([x, y, r, g, b])
vbo = ctx.buffer(vertices.astype('f4').tobytes())
vao = ctx.simple_vertex_array(prog, vbo, 'in_vert', 'in_color')
fbo = ctx.simple_framebuffer((512, 512))
fbo.use()
fbo.clear(0.0, 0.0, 0.0, 1.0)
vao.render(moderngl.LINE_STRIP)
Image.frombytes('RGB', fbo.size, fbo.read(), 'raw', 'RGB', 0, -1).show()
実行結果
以下のようなエラーが出る場合、’moderngl.mgl’のビルドをする。
>python guide.py
Traceback (most recent call last):
File "guide.py", line 6, in <module>
ctx = moderngl.create_standalone_context()
AttributeError: module 'moderngl' has no attribute 'create_standalone_context'
‘moderngl.mgl’のビルドのために、リポジトリをクローンし、setup.py を試すも、Microsoft Visual C++ 14.0 が必要。
\moderngl>python setup.py build_ext --inplace
running build_ext
building 'moderngl.mgl' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
ひとまず、紹介されたURLから、すべてのダウンロード > Visual Studio 2019 のツール > Build Tools for Visual Studio 2019 をダウンロード。
さらに、実行して、C++ Build Toolsの項目をチェック、以下を選択してインストール。
- MSVC v142 – VS 2019 C++ x64/x86ビルドツール
- Windows 10 SDK
- Windows 用 C++ CMake ツール
- ツールのコア機能テスト – ビルド ツール
- MSVC v140 – VS 2015 C++ ビルドツール
インストール完了後に以下のようなエラーが出る場合は更に対応が必要。
LINK : fatal error LNK1158: 'rc.exe' を実行できません。
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158
x86, x64について、C:\Program Files (x86)\Windows Kits\10\bin にある、「10.0.16299.0」「10.0.18362.0」といったフォルダがあり、その中で最も新しいフォルダの中のx86, x64のフォルダを確認し、以下のように操作する。
x86フォルダの中身 → C:\Program Files (x86)\Windows Kits\10\bin\x86 へコピー
x64フォルダの中身 →C:\Program Files (x86)\Windows Kits\10\bin\x64 へコピー
これで再度、以下を実行すると無事にインストールが完了した。
> python setup.py build_ext --inplace
(省略)
コード生成しています。
コード生成が終了しました。
copying build\lib.win-amd64-3.6\moderngl\mgl.cp36-win_amd64.pyd -> moderngl