1from OpenGL import platform as _p, constant, extensions 2from ctypes import * 3from OpenGL.raw.GL._types import * 4from OpenGL._bytes import as_8_bit 5c_void = None 6void = None 7Bool = c_uint 8 9class _GLXQuerier( extensions.ExtensionQuerier ): 10 prefix = as_8_bit('GLX_') 11 assumed_version = [1,1] 12 version_prefix = as_8_bit('GLX_VERSION_GLX_') 13 def getDisplay( self ): 14 from OpenGL.raw.GLX import _types 15 from OpenGL.platform import ctypesloader 16 import ctypes, os 17 X11 = ctypesloader.loadLibrary( ctypes.cdll, 'X11' ) 18 XOpenDisplay = X11.XOpenDisplay 19 XOpenDisplay.restype = ctypes.POINTER(_types.Display) 20 return XOpenDisplay( os.environ.get( 'DISPLAY' )) 21 def getScreen( self, display ): 22 from OpenGL.platform import ctypesloader 23 from OpenGL.raw.GLX import _types 24 import ctypes, os 25 X11 = ctypesloader.loadLibrary( ctypes.cdll, 'X11' ) 26 XDefaultScreen = X11.XDefaultScreen 27 XDefaultScreen.argtypes = [ctypes.POINTER(_types.Display)] 28 return XDefaultScreen( display ) 29 30 def pullVersion( self ): 31 from OpenGL.GLX import glXQueryVersion 32 import ctypes 33 if glXQueryVersion: 34 display = self.getDisplay() 35 major,minor = ctypes.c_int(),ctypes.c_int() 36 glXQueryVersion(display, major, minor) 37 return [major.value,minor.value] 38 else: 39 return [1,1] 40 def pullExtensions( self ): 41 if self.getVersion() >= [1,2]: 42 from OpenGL.GLX import glXQueryExtensionsString 43 display = self.getDisplay() 44 screen = self.getScreen( display ) 45 46 if glXQueryExtensionsString: 47 return glXQueryExtensionsString( display,screen ).split() 48 return [] 49GLXQuerier=_GLXQuerier() 50 51 52class struct___GLXcontextRec(Structure): 53 __slots__ = [ 54 ] 55struct___GLXcontextRec._fields_ = [ 56 ('_opaque_struct', c_int) 57] 58 59class struct___GLXcontextRec(Structure): 60 __slots__ = [ 61 ] 62struct___GLXcontextRec._fields_ = [ 63 ('_opaque_struct', c_int) 64] 65 66GLXContext = POINTER(struct___GLXcontextRec) # /usr/include/GL/glx.h:178 67XID = c_ulong # /usr/include/X11/X.h:66 68GLXPixmap = XID # /usr/include/GL/glx.h:179 69GLXDrawable = XID # /usr/include/GL/glx.h:180 70class struct___GLXFBConfigRec(Structure): 71 __slots__ = [ 72 ] 73struct___GLXFBConfigRec._fields_ = [ 74 ('_opaque_struct', c_int) 75] 76 77class struct___GLXFBConfigRec(Structure): 78 __slots__ = [ 79 ] 80struct___GLXFBConfigRec._fields_ = [ 81 ('_opaque_struct', c_int) 82] 83 84GLXFBConfig = POINTER(struct___GLXFBConfigRec) # /usr/include/GL/glx.h:182 85GLXFBConfigID = XID # /usr/include/GL/glx.h:183 86GLXContextID = XID # /usr/include/GL/glx.h:184 87GLXWindow = XID # /usr/include/GL/glx.h:185 88GLXPbuffer = XID # /usr/include/GL/glx.h:186 89GLXPbufferSGIX = XID 90GLXVideoSourceSGIX = XID 91 92class struct_anon_103(Structure): 93 __slots__ = [ 94 'visual', 95 'visualid', 96 'screen', 97 'depth', 98 'class', 99 'red_mask', 100 'green_mask', 101 'blue_mask', 102 'colormap_size', 103 'bits_per_rgb', 104 ] 105class struct_anon_18(Structure): 106 __slots__ = [ 107 'ext_data', 108 'visualid', 109 'class', 110 'red_mask', 111 'green_mask', 112 'blue_mask', 113 'bits_per_rgb', 114 'map_entries', 115 ] 116class struct__XExtData(Structure): 117 __slots__ = [ 118 'number', 119 'next', 120 'free_private', 121 'private_data', 122 ] 123XPointer = c_char_p # /usr/include/X11/Xlib.h:84 124struct__XExtData._fields_ = [ 125 ('number', c_int), 126 ('next', POINTER(struct__XExtData)), 127 ('free_private', POINTER(CFUNCTYPE(c_int, POINTER(struct__XExtData)))), 128 ('private_data', XPointer), 129] 130 131XExtData = struct__XExtData # /usr/include/X11/Xlib.h:163 132VisualID = c_ulong # /usr/include/X11/X.h:76 133struct_anon_18._fields_ = [ 134 ('ext_data', POINTER(XExtData)), 135 ('visualid', VisualID), 136 ('class', c_int), 137 ('red_mask', c_ulong), 138 ('green_mask', c_ulong), 139 ('blue_mask', c_ulong), 140 ('bits_per_rgb', c_int), 141 ('map_entries', c_int), 142] 143 144Visual = struct_anon_18 # /usr/include/X11/Xlib.h:246 145struct_anon_103._fields_ = [ 146 ('visual', POINTER(Visual)), 147 ('visualid', VisualID), 148 ('screen', c_int), 149 ('depth', c_int), 150 ('class', c_int), 151 ('red_mask', c_ulong), 152 ('green_mask', c_ulong), 153 ('blue_mask', c_ulong), 154 ('colormap_size', c_int), 155 ('bits_per_rgb', c_int), 156] 157 158XVisualInfo = struct_anon_103 # /usr/include/X11/Xutil.h:294 159class struct__XDisplay(Structure): 160 __slots__ = [ 161 ] 162struct__XDisplay._fields_ = [ 163 ('_opaque_struct', c_int) 164] 165 166class struct__XDisplay(Structure): 167 __slots__ = [ 168 ] 169struct__XDisplay._fields_ = [ 170 ('_opaque_struct', c_int) 171] 172 173Display = struct__XDisplay # /usr/include/X11/Xlib.h:495 174 175Pixmap = XID # /usr/include/X11/X.h:102 176Font = XID # /usr/include/X11/X.h:100 177Window = XID # /usr/include/X11/X.h:96 178GLX_ARB_get_proc_address = constant.Constant( 'GLX_ARB_get_proc_address', 1 ) 179__GLXextFuncPtr = CFUNCTYPE(None) # /usr/include/GL/glx.h:330 180 181# EXT_texture_from_pixmap (/usr/include/GL/glx.h:436) 182class struct_anon_111(Structure): 183 __slots__ = [ 184 'event_type', 185 'draw_type', 186 'serial', 187 'send_event', 188 'display', 189 'drawable', 190 'buffer_mask', 191 'aux_buffer', 192 'x', 193 'y', 194 'width', 195 'height', 196 'count', 197 ] 198struct_anon_111._fields_ = [ 199 ('event_type', c_int), 200 ('draw_type', c_int), 201 ('serial', c_ulong), 202 ('send_event', c_int), 203 ('display', POINTER(Display)), 204 ('drawable', GLXDrawable), 205 ('buffer_mask', c_uint), 206 ('aux_buffer', c_uint), 207 ('x', c_int), 208 ('y', c_int), 209 ('width', c_int), 210 ('height', c_int), 211 ('count', c_int), 212] 213 214GLXPbufferClobberEvent = struct_anon_111 # /usr/include/GL/glx.h:502 215class struct_anon_112(Structure): 216 __slots__ = [ 217 'type', 218 'serial', 219 'send_event', 220 'display', 221 'drawable', 222 'event_type', 223 'ust', 224 'msc', 225 'sbc', 226 ] 227struct_anon_112._fields_ = [ 228 ('type', c_int), 229 ('serial', c_ulong), 230 ('send_event', c_int), 231 ('display', POINTER(Display)), 232 ('drawable', GLXDrawable), 233 ('event_type', c_int), 234 ('ust', c_int64), 235 ('msc', c_int64), 236 ('sbc', c_int64), 237] 238 239GLXBufferSwapComplete = struct_anon_112 # /usr/include/GL/glx.h:514 240class struct___GLXEvent(Union): 241 __slots__ = [ 242 'glxpbufferclobber', 243 'glxbufferswapcomplete', 244 'pad', 245 ] 246struct___GLXEvent._fields_ = [ 247 ('glxpbufferclobber', GLXPbufferClobberEvent), 248 ('glxbufferswapcomplete', GLXBufferSwapComplete), 249 ('pad', c_long * 24), 250] 251 252GLXEvent = struct___GLXEvent # /usr/include/GL/glx.h:520 253 254class GLXHyperpipeConfigSGIX( Structure ): 255 _fields_ = [ 256 ('pipeName', c_char * 80), 257 ('channel',c_int), 258 ('participationType',c_uint), 259 ('timeSlice',c_int), 260 ] 261 262