Skip to content

Commit 7d7fc9e

Browse files
author
Jonathan Wright
committed
towards modern glx??
1 parent 3e244b3 commit 7d7fc9e

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

pyopengltk.py

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def tkSwapBuffers( self ):
187187
if sys.platform.startswith( 'linux' ):
188188

189189
from ctypes import c_int, c_char_p, c_void_p, cdll, POINTER, util, \
190-
pointer
190+
pointer, CFUNCTYPE, c_bool
191191
from OpenGL import GLX
192192
from OpenGL.raw._GLX import Display
193193
import tk_read_XWindowAttributes
@@ -229,7 +229,7 @@ def tkCreateContext( self ):
229229
major = c_int(0)
230230
minor = c_int(0)
231231
GLX.glXQueryVersion( self.__window, major, minor )
232-
print("GLX version:",major.value,minor.value)
232+
print("GLX version: %d.%d"%(major.value,minor.value))
233233
if major.value == 1 and minor.value < 3: # e.g. 1.2 and down
234234
visual = GLX.glXChooseVisual( self.__window, 0,
235235
(GL.GLint * len(att))(* att) )
@@ -252,7 +252,6 @@ def tkCreateContext( self ):
252252
ncfg )
253253
print( "Number of configs",ncfg.value )
254254
xwa = tk_read_XWindowAttributes.getXWA(self._wid)
255-
256255
print("xwa....id" ,xwa.visual.contents.visualid)
257256
ideal = xwa.visual.contents.visualid
258257
best = -1
@@ -266,13 +265,44 @@ def tkCreateContext( self ):
266265
else:
267266
print("OH dear - visual does not match?" )
268267
best=0
269-
typ = GLX.GLX_RGBA_TYPE #
270-
271-
self.__context = GLX.glXCreateNewContext(self.__window,
272-
cfgs[best],
273-
typ,
274-
None, # share list
275-
GL.GL_TRUE) # direct
268+
extensions = GLX.glXQueryExtensionsString(self.__window, screen)
269+
if "GLX_ARB_create_context" not in extensions or True: # FIXME HERE old style then:
270+
typ = GLX.GLX_RGBA_TYPE #
271+
self.__context = GLX.glXCreateNewContext(self.__window,
272+
cfgs[best],
273+
typ,
274+
None, # share list
275+
GL.GL_TRUE) # direct
276+
else:
277+
s = "glXCreateContextAttribsARB"
278+
# FAILING HERE
279+
p = GLX.glXGetProcAddress( c_char_p( s ) )
280+
281+
print(p)
282+
if not p:
283+
p = GLX.glXGetProcAddressARB( ( GL.GLubyte * len(s)).from_buffer_copy(s) )
284+
print(p)
285+
if p:
286+
print(" p is true")
287+
p.restype = GLX.GLXContext
288+
p.argtypes = [POINTER(Display),
289+
GLX.GLXFBConfig,
290+
GLX.GLXContext,
291+
c_bool,
292+
POINTER(c_int)]
293+
arb_attrs = fbatt[:-1] + [ ]
294+
295+
# GLX.GLX_CONTEXT_MAJOR_VERSION_ARB , 3
296+
# GLX.GLX_CONTEXT_MINOR_VERSION_ARB , 1,
297+
# 0 ]
298+
#
299+
# GLX.GLX_CONTEXT_FLAGS_ARB
300+
# GLX.GLX_CONTEXT_PROFILE_MASK_ARB
301+
#]
302+
# import pdb
303+
# pdb.set_trace()
304+
self.__context = p( self.__window, cfgs[best], None, GL.GL_TRUE,
305+
(GL.GLint * len(arb_attrs))(* arb_attrs) )
276306
if not self.__context:
277307
print("Failed to create context")
278308
print("Is Direct?: ", GLX.glXIsDirect( self.__window, self.__context ))

0 commit comments

Comments
 (0)