ctypes
で、Python をインストールしようとしたら、バージョン 2.5 ってのがリリースされていたので
早速入れてみたのですが、2.5 用の PyOpenGL がなかったのであれこれ探したところ、
ctypes モジュールを使えば DLL とかを直接使えるみたいです。
実験コード。
#!/bin/env python # -*- coding: utf-8 -*- import sys import os import codecs from ctypes import * from ctypes.util import find_library from ctypes.test import is_resource_enabled import pygame import psyco psyco.full() path = find_library("OpenGL32") gl = windll.LoadLibrary(path) path = find_library("Glu32") glu = windll.LoadLibrary(path) glut = windll.LoadLibrary("D:\\libs\\glut\\glut32.dll") # XXX #glut = find_library("glut32") # XXX # sys.stdout = codecs.getwriter('utf_8')(sys.stdout) # gl.glTranslatef.argtypes = [c_float, c_float, c_float] gl.glRotatef.argtypes = [c_float, c_float, c_float, c_float] glu.gluPerspective.argtypes = [c_double, c_double, c_double, c_double] glut.glutSolidTeapot.argtypes = [c_double] # defilnes # Matrix Mode GL_MATRIX_MODE = 0x0BA0 GL_MODELVIEW = 0x1700 GL_PROJECTION = 0x1701 GL_TEXTURE = 0x1702 # Depth buffer GL_DEPTH_TEST = 0x0B71 # Lighting GL_FLAT = 0x1D00 GL_SMOOTH = 0x1D01 # glPush/PopAttrib bits GL_DEPTH_BUFFER_BIT = 0x00000100 GL_COLOR_BUFFER_BIT = 0x00004000 def main(): """ Main """ width = 640 height = 480 pygame.init() pygame.display.set_mode((width, height), pygame.OPENGL | pygame.DOUBLEBUF) gl.glMatrixMode(GL_PROJECTION) gl.glLoadIdentity() glu.gluPerspective(90.0, width/height, 1.0, 100.0) gl.glMatrixMode(GL_MODELVIEW) gl.glShadeModel(GL_FLAT) gl.glEnable(GL_DEPTH_TEST) quit = False angle = 0 while not quit: for e in pygame.event.get(): if e.type in (pygame.QUIT, pygame.KEYDOWN): quit = True gl.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) gl.glLoadIdentity() gl.glTranslatef(0.0, 0.0, -2.5) gl.glRotatef(angle, 0.0, 1.0, 0.0) glut.glutSolidTeapot(1.0) angle += 0.1 if angle >= 360.0: angle = 0.0 pygame.display.flip() pygame.time.wait(33) # main() if __name__ == "__main__": main() print "End." # EOF
pygame のサンプルとか検索してでてきたコードとかを切り貼りしました。
Vista には GLUT がなかったので拾ってきました。
まあそんなこんなで急須が回転しているのでちゃんと動いているのでしょう。これはヴォースゲー。
すごいと言うか、とんでもなく凄いんじゃないかしら。夢がひろがりんぐ。