「PyOpenGLのインストールができない!!」
「PyOpenGLが動かない・・・」
このような場合は、この記事をご覧ください。
PyOpenGLが動くまでを説明します。
本記事の内容
- PyOpenGLとは?
- PyOpenGLのシステム要件
- PyOpenGLのインストール
- PyOpenGLの動作確認
それでは、上記に沿って解説していきます。
PyOpenGLとは?
PyOpenGL公式サイト
http://pyopengl.sourceforge.net/
PyOpenGLは、OpenGLとその関連APIに対するPythonバインディングです。
プログラムからOpenGLを気軽に触る場合には、最適な選択肢となります。
しかし、PyOpenGLを動かすまでがちょっと面倒です。
公式サイトを見ればわかりますが、決して親切とは言えません。
また、Googleで検索しても情報が錯綜しています。
今時のゲームのように、いろいろなルートがあります。
その中でも、比較的わかりやすいルートを見つけました。
今回は、そのルートをもとに説明していきます。
以上、PyOpenGLについての説明でした。
次は、PyOpenGLのシステム要件を確認します。
PyOpenGLのシステム要件
現時点(2021年7月)でのPyOpenGLの最新バージョンは、3.1.5となります。
この最新バージョンは、2020年1月4日にリリースされています。
PyOpenGLを動かすには、次の3つがポイントです。
- OS
- Python
- freeglut
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
Python
サポート対象となるのは以下のバージョンです。
- Python 2.7(推奨)
- Python 3.3以降
いまどき、Python 2系を推奨するのは微妙ですが・・・
おそらく、PyOpenGLの開発者がPython 2.7で開発しているのでしょう。
ただ、Python 3.3以降でもOKと言っているので一安心です。
Python 3系なら、基本的には問題がないということでしょう。
ちなみに、私は次のPythonで検証しています。
>python -V Python 3.9.6
現時点(2021年7月)では、Pythonの最新バージョンとなります。
Python 3.9.6へのアップグレードは、次の記事でまとめています。
freeglut
GLUTは、OpenGL Utility Toolkitの略称になります。
本来は、このGLUTを使うの基本のようです。
しかし、GLUTは1998年以降は更新されていません。
さすがに、こんなに古いモノは使えません。
その代わりに、GLUTと互換性を持つfreeglutというモノが利用されています。
freeglut
http://freeglut.sourceforge.net/
freeglutは、上記公式でソースをダウンロードできます。
自分でビルド(C言語)したい方は、頑張ってやってみてください。
頑張りたくない人は、次のページからdllをダウンロードしましょう。
https://www.transmissionzero.co.uk/software/freeglut-devel/
「Download freeglut 3.0.0 for MSVC」をクリックすると、ダウンロードが開始します。
ダウンロードが完了すると、「freeglut-MSVC-3.0.0-2.mp.zip」が保存されています。
このファイルを解凍します。
上記の場所に、「freeglut.dll」があるはずです。
なお、Windowsマシンが64bitであることを前提に話を進めています。
そして、この「freeglut.dll」を「C:\Windows\System32」にコピーします。
これでfreeglutのインストールは完了です。
まとめ
freeglutが、最大のポイントでしょうね。
それ以外、それほど大きな問題にはなりません。
以上、PyOpenGLのシステム要件について説明しました。
次は、PyOpenGLをインストールしていきます。
PyOpenGLのインストール
まずは、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.1.3 setuptools 57.1.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、PyOpenGLのインストールです。
PyOpenGLのインストールは、以下のコマンドとなります。
pip install PyOpenGL PyOpenGL_accelerate
なお、PyOpenGL_accelerateはほぼ必須のようです。
PyOpenGLと一緒にインストールすることが、推奨されています。
インストールは、しばらく時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------------- ------- pip 21.1.3 PyOpenGL 3.1.5 PyOpenGL-accelerate 3.1.5 setuptools 57.1.0
依存するパッケージは、ありません。
そのため、既存環境に対してPyOpenGLの導入は容易と言えます。
以上、PyOpenGLのインストールについて説明しました。
次は、PyOpenGLの動作確認を行います
PyOpenGLの動作確認
動作確認の前にやらないといけないことがあります。
PyOpenGLの以下ファイルを変更します。
\Lib\site-packages\OpenGL\platform\win32.py
変更箇所は、42行目。
現状のままだと、次のエラーが出てしまいます。
OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInit, check for bool(glutInit) before calling
そこで、42行目を次のように変更します。
もしくは、次のように変更してもOK。
for possible in ('freeglut','glut%s.%s'%(size,vc,)):
これで、glutInit関数が認識されました。
では、以下のコードを実行してみましょう。
from OpenGL.GLUT import * from OpenGL.GL import * def display(): glClear(GL_COLOR_BUFFER_BIT) glColor3f(1.0, 1.0, 1.0) glBegin(GL_POLYGON) glVertex3f(0.25, 0.75, 0.0) glVertex3f(0.25, 0.25, 0.0) glVertex3f(0.75, 0.25, 0.0) glVertex3f(0.75, 0.75, 0.0) glEnd() glFlush() if __name__ == '__main__': glutInit(sys.argv) glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) glutInitWindowSize(300, 300) glutCreateWindow(b"test") glutDisplayFunc(display) glutMainLoop()
上記コードを実行します。
問題なければ、次の画面が表示されます。
上記画面を確認できれば、PyOpenGLの動作確認は問題ありません。
以上、PyOpenGLの動作確認を説明しました。