File: check_glut_fc.py

package info (click to toggle)
pyopengl 3.1.10%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,024 kB
  • sloc: python: 108,056; sh: 13; makefile: 8
file content (123 lines) | stat: -rw-r--r-- 3,102 bytes parent folder | download | duplicates (2)
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()