#!/usr/bin/env python2.4 from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.arrays import GLcharArray import pygame from pygame.locals import * import sys def enable_vsync(): if sys.platform != 'darwin': return try: import ctypes import ctypes.util ogl = ctypes.cdll.LoadLibrary(ctypes.util.find_library("OpenGL")) v = ctypes.c_int(1) ogl.CGLSetParameter(ogl.CGLGetCurrentContext(), ctypes.c_int(222), ctypes.pointer(v)) except: print "Unable to set vsync mode, using driver defaults" def skipping_next_frame(): return False def set_res((width, height)): if height==0: height=1 pygame.display.gl_set_attribute(GL_DEPTH_SIZE, 24) video_flags = OPENGL|DOUBLEBUF #video_flags = OPENGL|DOUBLEBUF|FULLSCREEN pygame.display.set_mode((width, height), video_flags) #print pygame.display.gl_get_attribute(GL_DEPTH_SIZE) glViewport(0, 0, width, height) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(45, 1.0*width/height, 1.0, 10e6) glMatrixMode(GL_MODELVIEW) glLoadIdentity() def init(): import shader glShadeModel(GL_SMOOTH) glClearColor(0.0, 0.0, 0.0, 0.0) glClearDepth(1.0) glEnable(GL_DEPTH_TEST) glEnable(GL_CULL_FACE) glEnable(GL_TEXTURE_2D) glDepthFunc(GL_LEQUAL) #glEnable(GL_BLEND) glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0) glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1) """ """ LightAmbient = ( (0.2, 0.2, 0.2, 1.0) ) LightDiffuse = ( (0.5, 0.5, 0.5, 1.0) ) LightPosition = ( (0.0, 0.2, 2.0, 1.0) ) glEnable(GL_LIGHTING) glLightfv( GL_LIGHT1, GL_AMBIENT, LightAmbient ) glLightfv( GL_LIGHT1, GL_DIFFUSE, LightDiffuse ) glLightfv( GL_LIGHT1, GL_POSITION, LightPosition ) glEnable( GL_LIGHT1 ) """ """ shader.mgr.select("standard") glLightModelfv(GL_LIGHT_MODEL_AMBIENT, (0.3, 0.3, 0.3, 1.0)) #glEnable(GL_AUTO_NORMAL) def predraw(): glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) glLoadIdentity() #glTranslatef(-1.0, 0.0, -9.0) glRotatef(270.0, 1.0, 0.0, 0.0) def next_frame(): pygame.display.flip() if __name__ == '__main__': main()