Before using an extension function, you should check that the extension is implemented by the current driver. Typically this is done using glGetString(GL_EXTENSIONS), but pyglet has a convenience module, pyglet.gl.gl_info that does this for you:
if pyglet.gl.gl_info.have_extension('GL_ARB_shadow'): # ... do shadow-related code. else: # ... raise an exception, or use a fallback method
You can also easily check the version of OpenGL:
if pyglet.gl.gl_info.have_version(1,5): # We can assume all OpenGL 1.5 functions are implemented.
Remember to only call the gl_info functions after creating a window.
There is a corresponding glu_info module for checking the version and extensions of GLU.
nVidia often release hardware with extensions before having them registered officially. When you import * from pyglet.gl you import only the registered extensions. You can import the latest nVidia extensions with:
from pyglet.gl.glext_nv import *