Raspberry Pi 3へPyOpenGLをインストールしました。PyOpenGLは、グラフィックスハードウェア向けの2次元/3次元コンピュータグラフィックスAPIであるOpenGLを、Pythonからアクセスできるライブラリで、今回は、PyOpenGLのバージョン「3.1.1a1」をPython2.7からアクセスできるようにインストールしました。
PyOpenGLのインストール
次のコマンドにより、PyOpenGLをインストールします。
$ sudo easy_install pyopengl Searching for pyopengl Reading https://pypi.python.org/simple/pyopengl/ Downloading https://pypi.python.org/packages/f0/d6/daabe9beb313c0f40225e179f92d5faf8f0557213d75ff52b9b759f5d1c9/PyOpenGL-3.1.1a1.zip#md5=4fe5de1c531843a8e2a6769c26e4bfdd Best match: PyOpenGL 3.1.1a1 Processing PyOpenGL-3.1.1a1.zip Writing /tmp/easy_install-JtuFhM/PyOpenGL-3.1.1a1/setup.cfg Running PyOpenGL-3.1.1a1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-JtuFhM/PyOpenGL-3.1.1a1/egg-dist-tmp-gSRgwA warning: no previously-included files matching '*.odt' found anywhere in distribution warning: no previously-included files matching '*.odp' found anywhere in distribution warning: no previously-included files matching '.cvsignore' found anywhere in distribution warning: no previously-included files matching '*.diff' found anywhere in distribution warning: no previously-included files found matching 'src/*.h' warning: no previously-included files found matching 'src/*.xml' warning: no previously-included files found matching 'src/*.zip' warning: no previously-included files found matching 'src/*.pdf' warning: no previously-included files found matching 'src/*.zip' warning: no previously-included files found matching 'src/*.txt' warning: no files found matching 'src/win32deps.py' warning: no files found matching 'src/toglinstall/get_togl.py' warning: no files found matching 'metadata.py' warning: no files found matching 'ChangeLog.txt' warning: no previously-included files found matching 'OpenGL_accelerate' zip_safe flag not set; analyzing archive contents... OpenGL.wrapper: module references __file__ OpenGL.platform.ctypesloader: module references __file__ OpenGL.Tk.__init__: module references __file__ creating /usr/local/lib/python2.7/dist-packages/PyOpenGL-3.1.1a1-py2.7.egg Extracting PyOpenGL-3.1.1a1-py2.7.egg to /usr/local/lib/python2.7/dist-packages Adding PyOpenGL 3.1.1a1 to easy-install.pth file Installed /usr/local/lib/python2.7/dist-packages/PyOpenGL-3.1.1a1-py2.7.egg Processing dependencies for pyopengl Finished processing dependencies for pyopengl
PyOpenGLは「/usr/local/lib/python2.7/dist-packages/PyOpenGL-3.1.1a1-py2.7.egg/OpenGL」にインストールされます。作成されたフォルダを次に示します。
正常にインストールされたか、次のようにpythonを実行してみます。
$ python Python 2.7.9 (default, Sep 17 2016, 20:26:04) [GCC 4.9.2] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> from OpenGL.GL import * >>> from OpenGL.GLU import * >>>
PythonからアクセスできるOpenGLについて
Raspberry Pi 3にインストールしている次のバージョンでは、すでにPythonからアクセスできるOpenGLがインストールされています。
$ uname -a Linux raspberrypi 4.9.24-v7+ #993 SMP Wed Apr 26 18:01:23 BST 2017 armv7l GNU/Linux
次のコマンドで確認すると、確かに「python-opengl – Python bindings to OpenGL (Python 2)等」が表示されます。
$ apt-cache search opengl | grep python libtulip-python-4.6 – Tulip graph library – Qt/OpenGL GUI runtime python-glitch – Python library for OpenGL graphics programming python-gtkglext1 – GtkGLext python bindings python-kivy – Kivy – Multimedia / Multitouch framework in Python (Python 2) python-opengl – Python bindings to OpenGL (Python 2) python-pyqt5.qtopengl – Python bindings for Qt5’s OpenGL module python-pyqt5.qtopengl-dbg – Python bindings for Qt5’s OpenGL module (debug extension) python-pyside.qtopengl – Qt 4 OpenGL module – Python bindings python-qt4 – Python bindings for Qt4 python-qt4-gl – Python bindings for Qt4’s OpenGL module python-qt4-gl-dbg – Python bindings for Qt4’s OpenGL module (debug extension) python-sfml – Simple and Fast Multimedia Library – Python 2 Bindings python-sfml-dbg – Simple and Fast Multimedia Library – Python 2 Debug Bindings python-sfml-doc – Simple and Fast Multimedia Library – Documentation python-soya – high level 3D engine for Python python-soya-dbg – high level 3D engine for Python – debug extension python-soya-doc – high level 3D engine for Python python3-kivy – Kivy – Multimedia / Multitouch framework in Python (Python 3) python3-opengl – Python bindings to OpenGL (Python 3) python3-pyqt4 – Python3 bindings for Qt4 python3-pyqt4.qtopengl – Python 3 bindings for Qt4’s OpenGL module python3-pyqt4.qtopengl-dbg – Python 3 bindings for Qt4’s OpenGL module (debug extension) python3-pyqt5.qtopengl – Python 3 bindings for Qt5’s OpenGL module python3-pyqt5.qtopengl-dbg – Python 3 bindings for Qt5’s OpenGL module (debug extension) python3-pyside.qtopengl – Qt 4 OpenGL module – Python3 bindings python3-sfml – Simple and Fast Multimedia Library – Python 3 Bindings python3-sfml-dbg – Simple and Fast Multimedia Library – Python 3 Debug Bindings
しかしこの状態で、pythonを実行すると、次のように「>>> No module named OpenGL.GL」のエラーが表示され、OpenGLがインポートできません。
$ python Python 2.7.9 (default, Sep 17 2016, 20:26:04) [GCC 4.9.2] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> from OpenGL.GL import * Traceback (most recent call last): File ““, line 1, in ImportError: No module named OpenGL.GL >>> No module named OpenGL.GL
どうも「apt-cache search」コマンドで表示されるのは、PyOpenGLではないようです。
PyOpenGLを使用したサンプルプログラム
PyOpenGLを確認するためのサンプルプログラム「openglsample2.py」を次に示します。
from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * import sys def display(): glClear(GL_COLOR_BUFFER_BIT) glFlush() def main(): glutInit(sys.argv) glutInitWindowSize(300, 300) glutInitDisplayMode(GLUT_RGBA) glutCreateWindow(b"OpenGL") glutDisplayFunc(display) glClearColor(0.0, 0.0, 0.0, 1.0) glutMainLoop() return 0 if __name__ == "__main__": main()
次のコマンドで作成したサンプルプログラムを実行します。
$ python openglsample2.py
実行すると次のようにウインドウが表示されます。