OpenGLの勉強再開

以前やったことを思い出すのにとりあえずpythonglutで復習を開始した。
簡単なシーンエディタの作成までいきたいので
いずれは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
を参考にした。