OpenGLの勉強再開
以前やったことを思い出すのにとりあえずpythonとglutで復習を開始した。
簡単なシーンエディタの作成までいきたいので
いずれはglutじゃなくて他のツールキットを使う予定。
とりえあず、Windowを表示して立方体を表示することころまで。
#!/usr/bin/env python # -*- coding: utf-8 -*- from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * # window idを記憶しておく window=0 # 初期化とWindow生成 def init(width, height, title): global window # initialize glut glutInit("") glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) # create window glutInitWindowSize(width, height) glutInitWindowPosition(100, 100) window = glutCreateWindow(title) glClearColor(0.0, 0.0, 0.0, 0.0) glShadeModel(GL_FLAT) # set callbacks glutDisplayFunc(display) glutReshapeFunc(reshape) glutKeyboardFunc(keyPressed) # 描画 def display(): print 'display' glClear(GL_COLOR_BUFFER_BIT) # 行列をクリア glLoadIdentity() # 視野変換 gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) # モデリング変換 glScalef(1.0, 2.0, 1.0) # 立方体 glColor3f(1.0, 1.0, 1.0) glutWireCube(1.0) glFlush() # ウィンドウリサイズ def reshape(width, height): print 'reshape' # reset viewport glViewport(0, 0, width, height) # reset projection glMatrixMode(GL_PROJECTION) glLoadIdentity() #glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0) gluPerspective(60.0, 1.0, 1.5, 20.0) glMatrixMode(GL_MODELVIEW) # キーボード def keyPressed(*args): global window print 'keyPressed' # ESCAPE if args[0] == '\033': glutDestroyWindow(window) sys.exit() def main(): init(500, 500, 'glut sample') glutMainLoop() if == '__main__': print "Hit ESC key to quit." main()
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=05:NeHe
を参考にした。