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 114 115 116 117 118 119 120 121 122 123
|
"""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, sys, os
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 < 2:
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)
sys.stdout.write('OK\n')
sys.stdout.flush()
try:
if fgDeinitialize:
fgDeinitialize(False)
except NameError:
pass # Older PyOpenGL, you may see a seg-fault here...
os._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()
|