2011/11/17

windows7(32bit)にpyOpenGLをインストール

ここを参考にした。
サイトの説明文はまるでlinuxでやっているようだがwindowsでもOK。

1.setuptoolsのインストール
パッケージインストールツール。windows pythonにはデフォルトでインストール
されていないのでインストールする必要がある。
PyOpenGLのインストールに必要。

インストール方法:
python-setuptoolsのセットアップファイルをダウンロード
#wget http://peak.telecommunity.com/dist/ez_setup.py
↑この部分だけlinuxでやった。

ダウンロードしたファイルをwindowsのコマンドプロンプトで
下記のように実行した。
python ez_setup.py
すでに入ってるよって感じのメッセージが出た。
py2exeか何かを入れるときに入れてたのかな。

2.glutのインストール
OpenGLを使用するためのライブラリ
glut-3.7.6-bin.zipをダウンロードして、解凍する。
↑これはファイル名で検索したら出てきたのでそれをダウンロードした。
 zipを展開する。

*dllを
C:WINDOWS\systemへコピーする。
C:WINDOWS\system32へコピーする。

と書いてたがよくわからないので下記ファイルをコピーした。
glut.def
glut.h
glut32.dll
glut32.lib


3.PyOpenGLのインストール
PyOpenGL-3.0.0a6.tar.gzをダウンロードして展開をする。
↑これもファイル名で検索して出てきたやつをダウンロードした。
 展開はlinuxにてtar xzvf PyOpenGL-3.0.0a6.tar.gzで行った。

windowsのコマンドプロンプトにて上記で展開したディレクトリに入り
下記コマンドを実行した。
cd PyOpenGL-3.0.0a6
python setup.py install
これでインストール完了。


ここにサンプルとかpy2exesampleもあるっぽい。
サンプルはなぜか動かなかった。py2exesampleは試してない。

インストール後、下記ファイルを作成じて実行してみた。
画面が出ればインストール成功と思われる。
実行コマンドはpython sample.pyでOK

ファイル名sample.py

from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import sys

ESCAPE = '\033'
lastx = x = 30
lasty = y = 30

def initialize():
glClearDepth(1.0)
glEnable(GL_DEPTH_TEST)
glClearColor(0.0, 0.5, 0.0, 0.0)
glShadeModel(GL_SMOOTH)

glMatrixMode(GL_PROJECTION)
glFrustum(-0.5, 0.5, -0.5, 0.5, 1.0, 3.0)
glMatrixMode(GL_MODELVIEW)

glTranslatef(0.0, 0.0, -2.0)
glRotatef(y, 1.0, 0.0, 0.0)
glRotatef(x, 0.0, 1.0, 0.0)
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE)
glEnable(GL_COLOR_MATERIAL)

def mouseMotion(x, y):
global lastx, lasty
lastx = x
lasty = y
glutPostRedisplay()

def display():
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT )

glPushMatrix()

glBegin(GL_QUADS)
glNormal3f( 0.0, 0.0, 1.0)
glVertex3f( 0.5, 0.5, 0.5)
glVertex3f(-0.5, 0.5, 0.5)
glVertex3f(-0.5,-0.5, 0.5)
glVertex3f( 0.5,-0.5, 0.5)

glNormal3f( 0.0, 0.0,-1.0)
glVertex3f(-0.5,-0.5,-0.5)
glVertex3f(-0.5, 0.5,-0.5)
glVertex3f( 0.5, 0.5,-0.5)
glVertex3f( 0.5,-0.5,-0.5)

glNormal3f( 0.0, 1.0, 0.0)
glVertex3f( 0.5, 0.5, 0.5)
glVertex3f( 0.5, 0.5,-0.5)
glVertex3f(-0.5, 0.5,-0.5)
glVertex3f(-0.5, 0.5, 0.5)

glNormal3f( 0.0,-1.0, 0.0)
glVertex3f(-0.5,-0.5,-0.5)
glVertex3f( 0.5,-0.5,-0.5)
glVertex3f( 0.5,-0.5, 0.5)
glVertex3f(-0.5,-0.5, 0.5)

glNormal3f( 1.0, 0.0, 0.0)
glVertex3f( 0.5, 0.5, 0.5)
glVertex3f( 0.5,-0.5, 0.5)
glVertex3f( 0.5,-0.5,-0.5)
glVertex3f( 0.5, 0.5,-0.5)

glNormal3f(-1.0, 0.0, 0.0)
glVertex3f(-0.5,-0.5,-0.5)
glVertex3f(-0.5,-0.5, 0.5)
glVertex3f(-0.5, 0.5, 0.5)
glVertex3f(-0.5, 0.5,-0.5)
glEnd()

glPopMatrix()
glutSwapBuffers()

def keyboard(*args):
if args[0] == ESCAPE:
sys.exit()

def reshape(w, h):
pass

def main():
glutInit(sys.argv)

glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH )

glutInitWindowPosition( 100, 100 )
glutInitWindowSize( 500, 400 )
glutCreateWindow( sys.argv[0] )

glutDisplayFunc( display )
glutKeyboardFunc( keyboard )
glutReshapeFunc( reshape )
glutMotionFunc( mouseMotion )

initialize()

glutMainLoop()

print "Hit ESC key to quit."
main()