Skip to main content

GLLight — wiki

In OpenGL, tracking what lights are available can be tricky. This class make it a little easier, by allocating lights when you create an instance, and deallocating a light when the instance is destroyed.

class GLLight(object):
    lights = [GL_LIGHT0, GL_LIGHT1, GL_LIGHT2, GL_LIGHT3, GL_LIGHT4,
        GL_LIGHT5, GL_LIGHT6, GL_LIGHT7]
    def __init__(self):
        try:
            self.id = self.lights.pop(-1)
        except IndexError:
            raise RuntimeError('Too many lights allocated.')

    def __del__(self):
        self.lights.append(self.id)