1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
"""Test GLUT forward-compatible mode..."""
from __future__ import print_function
import OpenGL
OpenGL.FORWARD_COMPATIBLE_ONLY = True
OpenGL.ERROR_CHECKING = True
#OpenGL.USE_ACCELERATE = False
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
#from OpenGL.GL import shaders
import time
start = time.time()
window = None
def display():
try:
glutSetWindow(window);
glClearColor (0.0, 0.0, (time.time()%1.0)/1.0, 0.0)
glClear (GL_COLOR_BUFFER_BIT)
try:
glGetString( GL_EXTENSIONS )
except GLError:
pass
else:
print('Egads, glGetString should not have worked!')
assert bool( glGenVertexArrays ), "Should have vertex array support in 3.2"
glFlush ()
glutSwapBuffers()
except Exception:
glutDestroyWindow( window )
raise
size = (250,250)
def reshape( *args ):
global size
size = args
glViewport( *( (0,0)+args) )
display()
def ontimer( *args ):
# print 'timer', args, '@time', time.time()-start
glutTimerFunc( 1000, ontimer, 24 )
def idle():
delta = time.time()-start
if delta < 10:
global size
x,y = size
if delta < 5:
change = +1
else:
change = -1
x = x-change
y = y+change
if x < 1:
x = 1
if y < 1:
y = 1
glutReshapeWindow( x, y )
size = (x,y)
glutSetWindow(window)
glutPostRedisplay()
else:
glutDestroyWindow( window )
print('window destroyed')
try:
if fgDeinitialize: fgDeinitialize(False)
except NameError:
pass # Older PyOpenGL, you may see a seg-fault here...
import sys
sys.exit( 0 )
def printFunction( name ):
def onevent( *args ):
print('%s -> %s'%(name, ", ".join( [str(a) for a in args ])))
return onevent
if __name__ == "__main__":
import sys
newArgv = glutInit(sys.argv)
glutInitContextVersion(3, 1)
glutInitContextFlags(GLUT_FORWARD_COMPATIBLE)
glutInitContextProfile(GLUT_CORE_PROFILE)
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH )
glutSetOption(
GLUT_ACTION_ON_WINDOW_CLOSE,
GLUT_ACTION_GLUTMAINLOOP_RETURNS
);
glutInitWindowSize(250, 250)
glutInitWindowPosition(100, 100)
window = glutCreateWindow("hello")
print('window', repr(window))
glutDisplayFunc(display)
glutReshapeFunc(reshape)
glutMouseFunc(printFunction( 'Mouse' ))
glutEntryFunc(printFunction( 'Entry' ))
glutKeyboardFunc( printFunction( 'Keyboard' ))
glutKeyboardUpFunc( printFunction( 'KeyboardUp' ))
glutMotionFunc( printFunction( 'Motion' ))
glutPassiveMotionFunc( printFunction( 'PassiveMotion' ))
glutVisibilityFunc( printFunction( 'Visibility' ))
glutWindowStatusFunc( printFunction( 'WindowStatus' ))
glutSpecialFunc( printFunction( 'Special' ))
glutSpecialUpFunc( printFunction( 'SpecialUp' ))
glutTimerFunc( 1000, ontimer, 23 )
glutIdleFunc( idle )
glutMainLoop()
|