File: check_glut_debug.py

package info (click to toggle)
pyopengl 3.1.6%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 14,732 kB
  • sloc: python: 106,016; makefile: 8
file content (116 lines) | stat: -rw-r--r-- 3,490 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
"""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 *
import time
start = time.time()

from OpenGL.GL.AMD.debug_output import glGetDebugMessageLogAMD
from OpenGL.GL.ARB.debug_output import glGetDebugMessageLogARB
from OpenGL.GL.KHR.debug import glGetDebugMessageLogKHR
from OpenGL.GL.VERSION.GL_4_3 import glGetDebugMessageLog

glGetDebugMessageLog = extensions.alternate(
    glGetDebugMessageLog,
    glGetDebugMessageLogARB,
    glGetDebugMessageLogKHR,
    glGetDebugMessageLogAMD,
)

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"
        for message in get_debug_messages():
            print(message)
        glFlush ()
        glutSwapBuffers()
    except Exception:
        glutDestroyWindow( window )
        raise

def get_debug_messages():
    messages = []
    count = glGetIntegerv( GL_DEBUG_LOGGED_MESSAGES )
    max_size = int(glGetIntegerv( GL_MAX_DEBUG_MESSAGE_LENGTH ))
    source = GLenum()
    type = GLenum()
    id = GLenum()
    severity = GLenum()
    length = GLsizei()
    buffer = ctypes.create_string_buffer( max_size )
    for i in range(count):
        result = glGetDebugMessageLog( 1, max_size, source, type, id, severity, length, buffer )
        if result:
            messages.append( {
                'message':buffer[:length.value],
                'type': type.value,
                'id': id.value,
                'severity': severity.value,
                'source': source.value,
            })
    return messages
    assert len(messages), messages

        

size = (250,250)

def reshape( *args ):
    global size 
    size = args
    glViewport( *( (0,0)+args) )
    display()

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|GLUT_DEBUG)
    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' ))
    
    glutMainLoop()