OpenGLContext.glutvrmltestingcontext
index
/home/mcfletch/pylive/OpenGLContext/glutvrmltestingcontext.py

VRML97 context for GLUT

 
Modules
       
OpenGL.arrays
OpenGL.constant
OpenGL.contextdata
ctypes
OpenGL.error
OpenGL.GLUT.fonts
OpenGL.GLUT.freeglut
glob
OpenGLContext.glutinteractivecontext
logging
OpenGL.logs
os
OpenGL.GLUT.osx
OpenGL.platform
OpenGL.raw.GLUT
OpenGL.GLUT.special
sys
traceback
OpenGLContext.vrmlcontext

 
Classes
       
GLUTInteractiveContext(ViewPlatformMixin, InteractiveContext, GLUTContext)
VRMLContext(VRMLContext, GLUTInteractiveContext)
VRMLContext(VRMLContext, GLUTInteractiveContext)
VRMLContext(object)
VRMLContext(VRMLContext, GLUTInteractiveContext)
VRMLContext(VRMLContext, GLUTInteractiveContext)

 
BaseContext = class VRMLContext(VRMLContext, GLUTInteractiveContext)
    GLUT-specific VRML97-aware Testing Context
 
 
Method resolution order:
VRMLContext
VRMLContext
GLUTInteractiveContext
ViewPlatformMixin
InteractiveContext
GLUTContext
EventHandlerMixin
EventHandlerMixin
Context
object

Methods defined here:
OnMenuLoad(self, item)
React to a menu-load event
createMenus(self)
Create pop-up menus for the VRML97 context

Data and other attributes defined here:
worldPaths = []

Methods inherited from VRMLContext:
OnInit(self)
Initialise the VRMLContext keyboard shortcuts
load(self, filename)
Load given url, replacing current scenegraph
setupFontProviders(self)
Load font providers for the context
 
See the OpenGLContext.scenegraph.text package for the
available font providers.

Data descriptors inherited from VRMLContext:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from VRMLContext:
USE_FRUSTUM_CULLING = 1
USE_OCCLUSION_CULLING = 0
initialPosition = (0, 0, 10)
sg = None

Methods inherited from ViewPlatformMixin:
ViewPort(self, width, height)
Set the size of the OpenGL rendering viewport for the context
 
Because the ViewPlatform provide support for
"constant aspect ratio" in scenes, it is necessary
to keep the ViewPlatform updated regarding the current
aspect ratio of the ViewPort.  This implementation
merely calls the platform's setViewport, then
calls the super-class ViewPort method.
 
XXX
    Unfortunately, because Context objects may be
    old-style classes, we can't use super(), so
    this implementation actually calls
    context.Context.ViewPort directly.
getViewPlatform(self)
Customization Point: Instantiate ViewPlatform for this context
 
The default implementation is to instantiate a
viewplatform.ViewPlatform with position equal to
self.initialPosition and orientation equal to
self.initialOrientation.
 
See:
    OpenGLContext.shadow.shadowcontext for
    example where this method is overridden
setMovementManager(self, manager)
Set our current movement manager
setupDefaultEventCallbacks(self)
Customization point: Setup application default callbacks
 
This method binds a large number of callbacks which support
the OpenGLContext default camera-manipulation modes.  In
particular:
    * unmodified arrow keys for x,z (in camera coordinate
        space) movement
    * Alt+arrow keys for x,y (in camera coordinate space)
        movement
    * Ctrl+up/down arrow keys for rotating the head backward/
        forward
    * Mouse-button-2 (right) for entering "examine" mode
    * '-' for straightening the view platform

Data and other attributes inherited from ViewPlatformMixin:
initialOrientation = (0, 1, 0, 0)
movementManager = None
platform = None
slider = None

Data and other attributes inherited from InteractiveContext:
EventManagerClasses = [('keyboard', <class 'OpenGLContext.events.keyboardevents.KeyboardEventManager'>), ('keypress', <class 'OpenGLContext.events.keyboardevents.KeypressEventManager'>), ('mousebutton', <class 'OpenGLContext.events.mouseevents.MouseButtonEventManager'>), ('mousemove', <class 'OpenGLContext.events.mouseevents.MouseMoveEventManager'>), ('mousein', <class 'OpenGLContext.events.mouseevents.MouseInEventManager'>), ('mouseout', <class 'OpenGLContext.events.mouseevents.MouseOutEventManager'>)]
TimeManagerClass = <class 'OpenGLContext.events.timeeventgeneratormanager.TimeEventGeneratorManager'>
TimeEventGenerator EventManager object
 
This object conforms to the EventManager interface,
although it doesn't actually inherit from that class.
 
It provides support for the InternalTime generators
on which the Timer object is based.

Methods inherited from GLUTContext:
OnRedisplay(self)
windowing library has asked us to redisplay
OnResize(self, width, height)
Windowing library has resized the window
SwapBuffers(self)
Implementation: swap the buffers
__init__(self, definition=None, **named)
setCurrent(self)
Acquire the GL "focus"
setupCallbacks(self)
Setup the various callbacks for this context

Class methods inherited from GLUTContext:
ContextMainLoop(cls, *args, **named) from type
Mainloop for the GLUT testing context
glutFlagsFromDefinition(cls, definition) from type
Create our initialisation flags from a definition

Data and other attributes inherited from GLUTContext:
CONTEXT_DEFINITION_FLAG_MAPPING = (('doubleBuffer', GLUT_DOUBLE, GLUT_SINGLE, GLUT_DOUBLE), ('depthBuffer', GLUT_DEPTH, 0, GLUT_DEPTH), ('accumulationBuffer', GLUT_ACCUM, 0, GLUT_ACCUM), ('stencilBuffer', GLUT_STENCIL, 0, GLUT_STENCIL), ('rgb', GLUT_RGB, GLUT_INDEX, GLUT_RGB), ('multisampleBuffer', GLUT_MULTISAMPLE, 0, 0), ('multisampleSamples', GLUT_MULTISAMPLE, 0, 0), ('stereo', GLUT_STEREO, 0, 0))
DISPLAYMODE = 18
currentModifiers = 0

Methods inherited from EventHandlerMixin:
glutOnCharacter(self, character, x, y)
Convert character (non-control) press to context event
glutOnKeyDown(self, character, x, y)
Convert a key-press to a context-style event
glutOnKeyUp(self, character, x, y)
Convert a key-release to a context-style event
glutOnMouseButton(self, button, state, x, y)
Convert mouse-press-or-release to a Context-style event
glutOnMouseMove(self, x, y)
Convert mouse-movement to a Context-style event

Methods inherited from EventHandlerMixin:
DoEventCascade(self)
Do pre-rendering event cascade
 
Returns the total number of events generated by
timesensors and/or processed from the event cascade queue
ProcessEvent(self, event)
Primary dispatch point for events.
 
ProcessEvent uses the event's type attribute to determine the
appropriate manager for processing, then dispatches to that manager's
ProcessEvent method.
addEventHandler(self, eventType, *arguments, **namedarguments)
Add a new event handler function for the given event type
 
This is the primary client API for dealing with the event system.
Each event class will define a particular set of data values
required to form the routing key for the event.  Each event handler
class will define a registerCallback function which converts
its arguments into a matching key.
 
This function merely determines the appropriate handler then
dispatches to the handler's registerCallback method (without the
eventType argument).
 
See: mouseevents, keyboardevents
addEventManager(self, eventType, manager=None)
Add an event manager to the internal table of managers.
 
The return value is the previous manager or None if there was
no previous manager.
captureEvents(self, eventType, manager=None)
Temporarily capture events of a particular type.
 
This temporarily replaces a particular manager within the
dispatch set with provided manager.  This will normally be
used to create "modal" interfaces such as active drag
functions (where the interface is in a different "interaction
mode", so that actions have different meaning than in the
"default mode").
 
Passing None as the manager will restore the previous manager
to functioning.
 
Note: this function does not perform a "system capture"
of input (that is, mouse movements are only available if they
occur over the context's window and that window has focus).
 
Note: for capturing mouse input, you will likely want to
capture both movement and button events, it should be possible
to define a single handler to deal with both event types,
and pass that handler twice, once for each event type.
getEventManager(self, eventType)
Retrieve an event manager from the internal table of managers
 
Returns the appropriate manager, or None if there was no
manager registered for the given event type.
getTimeManager(self)
Get the time-event manager for this context
initializeEventManagers(self)
Initialize the event manager classes for this context.
 
This implementation iterates over self.EventManagerClasses
(a list of (eventType, managerClass) values) and calls
addEventManager for each item.

Methods inherited from Context:
DoInit(self)
Call the OnInit method at a time when the context is valid
 
This method provides a customization point where
contexts which do not completely initialize during
their __init__ method can arrange to have the OnInit
method processed after their initialization has
completed.  The default implementation here simply
calls OnInit directly w/ appropriate setCurrent
and unsetCurrent calls and calls the glutInit()
function with an empty argument-list.
OnDraw(self, force=1, *arguments)
Callback for the rendering/drawing mechanism
 
force -- if true, force a redraw.  If false, then only
    do a redraw if the event cascade has generated events.
 
return value is whether a visible change occured
 
This implementation does the following:
 
    * calls lockScenegraph()
        o calls DoEventCascade()
    * calls unlockScenegraph()
    * calls setCurrent()
    * calls renderPasses( self )
        See: passes sub-package
        See: visitor.py, rendervisitor.py, renderpass.py,
        shadow/passes.py for examples of render-pass-sets
        which can be triggered.
        See: flat.py for standard second-generation renderer
 
        The RenderPasses define the core of the rendering
        mechanism.  The default rendering passes will defer
        most rendering options to the scenegraph returned by
        getSceneGraph().  If that value is None (default)
        then the pass will use the Context's callbacks.
 
        You can define new RenderPasses to replace the
        rendering algorithm, override the Context's various
        callbacks to write raw OpenGL code, or work by
        customizing the scene graph library.
    * if there was a visible change (which is the return value
        from the render-pass-set), calls SwapBuffers()
    * calls unsetCurrent()
OnFrameRate(self, event=None)
Print the current frame-rate values
OnIdle(self, *arguments)
Override to perform actions when the rendering loop is idle
OnNextViewpoint(self, event=None)
Go to the next viewpoint for the scenegraph
OnQuit(self, event=None)
Quit the application (forcibly)
OnSaveImage(self, event=None, template='%(script)s-screen-%(count)04i.png', script=None, date=None, overwrite=False)
Save our current screen to disk (if possible)
Render(self, mode=None)
Customization point for geometry rendering
 
This method is called by the default render passes to
render the geometry for the system.  Wherever possible,
you should pay attention to the rendering modes to allow
for optimization of your geometry (for instance,
selection passes do not require lighting).
 
The default implementation merely ensures that matrix mode
is currently model view.
 
See: visitor.py, rendervisitor.py, renderpass.py,
shadow/passes.py for definitions of the properties of the
mode.
addPickEvent(self, event)
Add event to list of events to be processed by selection-render-mode
 
This is a method of the Context, rather than the
rendering pass (which might seem more elegant given
that it is the rendering pass which deals with the
events being registered) because the requests to
render a pick event occur outside of the rendering
loop.  As a result, there is (almost) never an
active context when the pick-event-request comes in.
drawPoll(self, timeout=None)
Wait timeout seconds for a redraw request
 
timeout -- timeout in seconds, if None, use
    self.drawPollTimeout
 
returns 0 if timeout, 1 if true
getPickEvents(self)
Get the currently active pick-events
getSceneGraph(self)
Get the scene graph for the context (or None)
 
You must return an instance of:
 
    OpenGLContext.scenegraph.scenegraph.SceneGraph
 
Normally you would create that using either a loader
from OpenGLContext.loader:
 
    from OpenGLContext.loader import vrml97
    def OnInit( self ):
        self.sg = vrml97.load( 'c:\somefile\world.wrl' )
 
or by using the classes in OpenGLContext.scenegraph.basenodes:
 
    from OpenGLContext.scenegraph import basenodes
    def OnInit( self ):
        self.sg = basenodes.sceneGraph(
            children = [
                basenodes.Transform(...)
            ],
        )
 
to define the scenegraph in Python code.
getTTFFiles(self)
Get TrueType font-file registry object
getViewPort(self)
Method to retrieve the current dimensions of the context
 
Return value is a width, height tuple. See Context.ViewPort
for setting of this value.
lockScenegraph(self, blocking=1)
Lock scenegraph locks to prevent other update/rendering actions
 
Potentially this could be called from a thread other than the
GUI thread, allowing the other thread to update structures in
the scenegraph without mucking up any active rendering pass.
renderedChildren(self, types=None)
Get the rendered children of the scenegraph
setupCache(self)
Setup caching strutures for content
 
This includes the general compiled-geometry caches
and the texture cache
setupExtensionManager(self)
Create an extension manager for this context
setupFrameRateCounter(self)
Setup structures for managing frame-rate
 
This sets self.frameCounter to an instance of
framecounter.FrameCounter, which is a simple node
used to track frame-rate metadata during rendering.
 
Updates to the framecounter are performed by OnDraw
iff there is a visible change processed.
 
Note:
    If you override this method, you need to either use
    an object which has the same API as a FrameCounter or
    use None, anything else will cause failures in the
    core rendering loop!
setupRedrawRequest(self)
Setup the redraw-request (threading) event
setupScenegraphLock(self)
Setup lock to protect scenegraph from updates during rendering
setupThreading(self)
Setup primitives (locks, events) for threading
shouldRedraw(self)
Return whether or not the context contents need to be redrawn
suppressRedraw(self)
Indicate to the context that there is no need to re-render
 
This method signals to the context that there are no updates
currently requiring redrawing of the context's contents.
 
See:
    Context.shouldRedraw and Context.triggerRedraw
triggerPick(self)
Trigger a selection rendering pass
 
If the context is not currently drawing, the selection render will
occur immediately, otherwise it will occur the next time the
rendering loop reaches the selection stage.
triggerRedraw(self, force=0)
Indicate to the context that it should redraw when possible
 
If force is true, the rendering will begin immediately if the
context is not already drawing.  Otherwise only the indicator flag
will be set.
unlockScenegraph(self)
Unlock scenegraph locks to allow other update/rendering actions
 
Potentially this could be called from a thread other than the
GUI thread, allowing the other thread to update structures in
the scenegraph without mucking up any active rendering pass.
unsetCurrent(self)
Give up the OpenGL focus from this context

Class methods inherited from Context:
getApplicationName(cls) from type
Retrieve the application name for configuration purposes
getContextType(cls, entrypoint=None, type=<class 'OpenGLContext.plugins.InteractiveContext'>) from type
Load a single context type via entry-point resolution
 
returns a Context sub-class *or* None if there is no such
context defined/available, will have a ContextMainLoop method 
for running the Context top-level loop.
getContextTypes(cls, type=<class 'OpenGLContext.plugins.InteractiveContext'>) from type
Retrieve the set of defined context types
 
type -- testing type key from setup.py for the registered modules
 
returns list of setuptools entry-point objects which can be passed to 
getContextType( name ) to retrieve the actual context type.
getDefaultContextType(cls) from type
Get the current user's preference for a default context type
getDefaultTTFFont(cls, type='sans') from type
Get the current user's preference for a default font
getUserAppDataDirectory(cls) from type
Retrieve user-specific configuration directory
 
Default implementation gives a directory-name in the
user's (system-specific) "application data" directory
named
setDefaultContextType(cls, name) from type
Set the current user's preference for a default font
setDefaultTTFFont(cls, name, type='sans') from type
Set the current user's preference for a default font

Static methods inherited from Context:
fromConfig(cfg)
Given a ConfigParser instance, produce a configured sub-class

Data and other attributes inherited from Context:
APPLICATION_NAME = 'OpenGLContext'
DEF = '#Context'
PROTO = 'Context'
allContexts = []
alreadyDrawn = None
contextDefinition = None
currentContext = None
drawPollTimeout = 0.01
drawing = None
frameCounter = None
renderPasses = <OpenGLContext.passes.renderpass._defaultRenderPasses object>
ttfFileRegistry = None
viewportDimensions = (0, 0)

 
class VRMLContext(VRMLContext, GLUTInteractiveContext)
    GLUT-specific VRML97-aware Testing Context
 
 
Method resolution order:
VRMLContext
VRMLContext
GLUTInteractiveContext
ViewPlatformMixin
InteractiveContext
GLUTContext
EventHandlerMixin
EventHandlerMixin
Context
object

Methods defined here:
OnMenuLoad(self, item)
React to a menu-load event
createMenus(self)
Create pop-up menus for the VRML97 context

Data and other attributes defined here:
worldPaths = []

Methods inherited from VRMLContext:
OnInit(self)
Initialise the VRMLContext keyboard shortcuts
load(self, filename)
Load given url, replacing current scenegraph
setupFontProviders(self)
Load font providers for the context
 
See the OpenGLContext.scenegraph.text package for the
available font providers.

Data descriptors inherited from VRMLContext:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Data and other attributes inherited from VRMLContext:
USE_FRUSTUM_CULLING = 1
USE_OCCLUSION_CULLING = 0
initialPosition = (0, 0, 10)
sg = None

Methods inherited from ViewPlatformMixin:
ViewPort(self, width, height)
Set the size of the OpenGL rendering viewport for the context
 
Because the ViewPlatform provide support for
"constant aspect ratio" in scenes, it is necessary
to keep the ViewPlatform updated regarding the current
aspect ratio of the ViewPort.  This implementation
merely calls the platform's setViewport, then
calls the super-class ViewPort method.
 
XXX
    Unfortunately, because Context objects may be
    old-style classes, we can't use super(), so
    this implementation actually calls
    context.Context.ViewPort directly.
getViewPlatform(self)
Customization Point: Instantiate ViewPlatform for this context
 
The default implementation is to instantiate a
viewplatform.ViewPlatform with position equal to
self.initialPosition and orientation equal to
self.initialOrientation.
 
See:
    OpenGLContext.shadow.shadowcontext for
    example where this method is overridden
setMovementManager(self, manager)
Set our current movement manager
setupDefaultEventCallbacks(self)
Customization point: Setup application default callbacks
 
This method binds a large number of callbacks which support
the OpenGLContext default camera-manipulation modes.  In
particular:
    * unmodified arrow keys for x,z (in camera coordinate
        space) movement
    * Alt+arrow keys for x,y (in camera coordinate space)
        movement
    * Ctrl+up/down arrow keys for rotating the head backward/
        forward
    * Mouse-button-2 (right) for entering "examine" mode
    * '-' for straightening the view platform

Data and other attributes inherited from ViewPlatformMixin:
initialOrientation = (0, 1, 0, 0)
movementManager = None
platform = None
slider = None

Data and other attributes inherited from InteractiveContext:
EventManagerClasses = [('keyboard', <class 'OpenGLContext.events.keyboardevents.KeyboardEventManager'>), ('keypress', <class 'OpenGLContext.events.keyboardevents.KeypressEventManager'>), ('mousebutton', <class 'OpenGLContext.events.mouseevents.MouseButtonEventManager'>), ('mousemove', <class 'OpenGLContext.events.mouseevents.MouseMoveEventManager'>), ('mousein', <class 'OpenGLContext.events.mouseevents.MouseInEventManager'>), ('mouseout', <class 'OpenGLContext.events.mouseevents.MouseOutEventManager'>)]
TimeManagerClass = <class 'OpenGLContext.events.timeeventgeneratormanager.TimeEventGeneratorManager'>
TimeEventGenerator EventManager object
 
This object conforms to the EventManager interface,
although it doesn't actually inherit from that class.
 
It provides support for the InternalTime generators
on which the Timer object is based.

Methods inherited from GLUTContext:
OnRedisplay(self)
windowing library has asked us to redisplay
OnResize(self, width, height)
Windowing library has resized the window
SwapBuffers(self)
Implementation: swap the buffers
__init__(self, definition=None, **named)
setCurrent(self)
Acquire the GL "focus"
setupCallbacks(self)
Setup the various callbacks for this context

Class methods inherited from GLUTContext:
ContextMainLoop(cls, *args, **named) from type
Mainloop for the GLUT testing context
glutFlagsFromDefinition(cls, definition) from type
Create our initialisation flags from a definition

Data and other attributes inherited from GLUTContext:
CONTEXT_DEFINITION_FLAG_MAPPING = (('doubleBuffer', GLUT_DOUBLE, GLUT_SINGLE, GLUT_DOUBLE), ('depthBuffer', GLUT_DEPTH, 0, GLUT_DEPTH), ('accumulationBuffer', GLUT_ACCUM, 0, GLUT_ACCUM), ('stencilBuffer', GLUT_STENCIL, 0, GLUT_STENCIL), ('rgb', GLUT_RGB, GLUT_INDEX, GLUT_RGB), ('multisampleBuffer', GLUT_MULTISAMPLE, 0, 0), ('multisampleSamples', GLUT_MULTISAMPLE, 0, 0), ('stereo', GLUT_STEREO, 0, 0))
DISPLAYMODE = 18
currentModifiers = 0

Methods inherited from EventHandlerMixin:
glutOnCharacter(self, character, x, y)
Convert character (non-control) press to context event
glutOnKeyDown(self, character, x, y)
Convert a key-press to a context-style event
glutOnKeyUp(self, character, x, y)
Convert a key-release to a context-style event
glutOnMouseButton(self, button, state, x, y)
Convert mouse-press-or-release to a Context-style event
glutOnMouseMove(self, x, y)
Convert mouse-movement to a Context-style event

Methods inherited from EventHandlerMixin:
DoEventCascade(self)
Do pre-rendering event cascade
 
Returns the total number of events generated by
timesensors and/or processed from the event cascade queue
ProcessEvent(self, event)
Primary dispatch point for events.
 
ProcessEvent uses the event's type attribute to determine the
appropriate manager for processing, then dispatches to that manager's
ProcessEvent method.
addEventHandler(self, eventType, *arguments, **namedarguments)
Add a new event handler function for the given event type
 
This is the primary client API for dealing with the event system.
Each event class will define a particular set of data values
required to form the routing key for the event.  Each event handler
class will define a registerCallback function which converts
its arguments into a matching key.
 
This function merely determines the appropriate handler then
dispatches to the handler's registerCallback method (without the
eventType argument).
 
See: mouseevents, keyboardevents
addEventManager(self, eventType, manager=None)
Add an event manager to the internal table of managers.
 
The return value is the previous manager or None if there was
no previous manager.
captureEvents(self, eventType, manager=None)
Temporarily capture events of a particular type.
 
This temporarily replaces a particular manager within the
dispatch set with provided manager.  This will normally be
used to create "modal" interfaces such as active drag
functions (where the interface is in a different "interaction
mode", so that actions have different meaning than in the
"default mode").
 
Passing None as the manager will restore the previous manager
to functioning.
 
Note: this function does not perform a "system capture"
of input (that is, mouse movements are only available if they
occur over the context's window and that window has focus).
 
Note: for capturing mouse input, you will likely want to
capture both movement and button events, it should be possible
to define a single handler to deal with both event types,
and pass that handler twice, once for each event type.
getEventManager(self, eventType)
Retrieve an event manager from the internal table of managers
 
Returns the appropriate manager, or None if there was no
manager registered for the given event type.
getTimeManager(self)
Get the time-event manager for this context
initializeEventManagers(self)
Initialize the event manager classes for this context.
 
This implementation iterates over self.EventManagerClasses
(a list of (eventType, managerClass) values) and calls
addEventManager for each item.

Methods inherited from Context:
DoInit(self)
Call the OnInit method at a time when the context is valid
 
This method provides a customization point where
contexts which do not completely initialize during
their __init__ method can arrange to have the OnInit
method processed after their initialization has
completed.  The default implementation here simply
calls OnInit directly w/ appropriate setCurrent
and unsetCurrent calls and calls the glutInit()
function with an empty argument-list.
OnDraw(self, force=1, *arguments)
Callback for the rendering/drawing mechanism
 
force -- if true, force a redraw.  If false, then only
    do a redraw if the event cascade has generated events.
 
return value is whether a visible change occured
 
This implementation does the following:
 
    * calls lockScenegraph()
        o calls DoEventCascade()
    * calls unlockScenegraph()
    * calls setCurrent()
    * calls renderPasses( self )
        See: passes sub-package
        See: visitor.py, rendervisitor.py, renderpass.py,
        shadow/passes.py for examples of render-pass-sets
        which can be triggered.
        See: flat.py for standard second-generation renderer
 
        The RenderPasses define the core of the rendering
        mechanism.  The default rendering passes will defer
        most rendering options to the scenegraph returned by
        getSceneGraph().  If that value is None (default)
        then the pass will use the Context's callbacks.
 
        You can define new RenderPasses to replace the
        rendering algorithm, override the Context's various
        callbacks to write raw OpenGL code, or work by
        customizing the scene graph library.
    * if there was a visible change (which is the return value
        from the render-pass-set), calls SwapBuffers()
    * calls unsetCurrent()
OnFrameRate(self, event=None)
Print the current frame-rate values
OnIdle(self, *arguments)
Override to perform actions when the rendering loop is idle
OnNextViewpoint(self, event=None)
Go to the next viewpoint for the scenegraph
OnQuit(self, event=None)
Quit the application (forcibly)
OnSaveImage(self, event=None, template='%(script)s-screen-%(count)04i.png', script=None, date=None, overwrite=False)
Save our current screen to disk (if possible)
Render(self, mode=None)
Customization point for geometry rendering
 
This method is called by the default render passes to
render the geometry for the system.  Wherever possible,
you should pay attention to the rendering modes to allow
for optimization of your geometry (for instance,
selection passes do not require lighting).
 
The default implementation merely ensures that matrix mode
is currently model view.
 
See: visitor.py, rendervisitor.py, renderpass.py,
shadow/passes.py for definitions of the properties of the
mode.
addPickEvent(self, event)
Add event to list of events to be processed by selection-render-mode
 
This is a method of the Context, rather than the
rendering pass (which might seem more elegant given
that it is the rendering pass which deals with the
events being registered) because the requests to
render a pick event occur outside of the rendering
loop.  As a result, there is (almost) never an
active context when the pick-event-request comes in.
drawPoll(self, timeout=None)
Wait timeout seconds for a redraw request
 
timeout -- timeout in seconds, if None, use
    self.drawPollTimeout
 
returns 0 if timeout, 1 if true
getPickEvents(self)
Get the currently active pick-events
getSceneGraph(self)
Get the scene graph for the context (or None)
 
You must return an instance of:
 
    OpenGLContext.scenegraph.scenegraph.SceneGraph
 
Normally you would create that using either a loader
from OpenGLContext.loader:
 
    from OpenGLContext.loader import vrml97
    def OnInit( self ):
        self.sg = vrml97.load( 'c:\somefile\world.wrl' )
 
or by using the classes in OpenGLContext.scenegraph.basenodes:
 
    from OpenGLContext.scenegraph import basenodes
    def OnInit( self ):
        self.sg = basenodes.sceneGraph(
            children = [
                basenodes.Transform(...)
            ],
        )
 
to define the scenegraph in Python code.
getTTFFiles(self)
Get TrueType font-file registry object
getViewPort(self)
Method to retrieve the current dimensions of the context
 
Return value is a width, height tuple. See Context.ViewPort
for setting of this value.
lockScenegraph(self, blocking=1)
Lock scenegraph locks to prevent other update/rendering actions
 
Potentially this could be called from a thread other than the
GUI thread, allowing the other thread to update structures in
the scenegraph without mucking up any active rendering pass.
renderedChildren(self, types=None)
Get the rendered children of the scenegraph
setupCache(self)
Setup caching strutures for content
 
This includes the general compiled-geometry caches
and the texture cache
setupExtensionManager(self)
Create an extension manager for this context
setupFrameRateCounter(self)
Setup structures for managing frame-rate
 
This sets self.frameCounter to an instance of
framecounter.FrameCounter, which is a simple node
used to track frame-rate metadata during rendering.
 
Updates to the framecounter are performed by OnDraw
iff there is a visible change processed.
 
Note:
    If you override this method, you need to either use
    an object which has the same API as a FrameCounter or
    use None, anything else will cause failures in the
    core rendering loop!
setupRedrawRequest(self)
Setup the redraw-request (threading) event
setupScenegraphLock(self)
Setup lock to protect scenegraph from updates during rendering
setupThreading(self)
Setup primitives (locks, events) for threading
shouldRedraw(self)
Return whether or not the context contents need to be redrawn
suppressRedraw(self)
Indicate to the context that there is no need to re-render
 
This method signals to the context that there are no updates
currently requiring redrawing of the context's contents.
 
See:
    Context.shouldRedraw and Context.triggerRedraw
triggerPick(self)
Trigger a selection rendering pass
 
If the context is not currently drawing, the selection render will
occur immediately, otherwise it will occur the next time the
rendering loop reaches the selection stage.
triggerRedraw(self, force=0)
Indicate to the context that it should redraw when possible
 
If force is true, the rendering will begin immediately if the
context is not already drawing.  Otherwise only the indicator flag
will be set.
unlockScenegraph(self)
Unlock scenegraph locks to allow other update/rendering actions
 
Potentially this could be called from a thread other than the
GUI thread, allowing the other thread to update structures in
the scenegraph without mucking up any active rendering pass.
unsetCurrent(self)
Give up the OpenGL focus from this context

Class methods inherited from Context:
getApplicationName(cls) from type
Retrieve the application name for configuration purposes
getContextType(cls, entrypoint=None, type=<class 'OpenGLContext.plugins.InteractiveContext'>) from type
Load a single context type via entry-point resolution
 
returns a Context sub-class *or* None if there is no such
context defined/available, will have a ContextMainLoop method 
for running the Context top-level loop.
getContextTypes(cls, type=<class 'OpenGLContext.plugins.InteractiveContext'>) from type
Retrieve the set of defined context types
 
type -- testing type key from setup.py for the registered modules
 
returns list of setuptools entry-point objects which can be passed to 
getContextType( name ) to retrieve the actual context type.
getDefaultContextType(cls) from type
Get the current user's preference for a default context type
getDefaultTTFFont(cls, type='sans') from type
Get the current user's preference for a default font
getUserAppDataDirectory(cls) from type
Retrieve user-specific configuration directory
 
Default implementation gives a directory-name in the
user's (system-specific) "application data" directory
named
setDefaultContextType(cls, name) from type
Set the current user's preference for a default font
setDefaultTTFFont(cls, name, type='sans') from type
Set the current user's preference for a default font

Static methods inherited from Context:
fromConfig(cfg)
Given a ConfigParser instance, produce a configured sub-class

Data and other attributes inherited from Context:
APPLICATION_NAME = 'OpenGLContext'
DEF = '#Context'
PROTO = 'Context'
allContexts = []
alreadyDrawn = None
contextDefinition = None
currentContext = None
drawPollTimeout = 0.01
drawing = None
frameCounter = None
renderPasses = <OpenGLContext.passes.renderpass._defaultRenderPasses object>
ttfFileRegistry = None
viewportDimensions = (0, 0)

 
Functions
       
CurrentContextIsValid = glXGetCurrentContext(...)
glutAddMenuEntry(...)
glutAddMenuEntry( STRING(label), c_int(value) ) -> None
glutAddSubMenu(...)
glutAddSubMenu( STRING(label), c_int(subMenu) ) -> None
glutAttachMenu(...)
glutAttachMenu( c_int(button) ) -> None
glutBitmapCharacter(...)
glutBitmapCharacter( c_void_p(font), c_int(character) ) -> None
glutBitmapHeight(...)
glutBitmapHeight( c_void_p(font) ) -> c_int
glutBitmapLength(...)
glutBitmapLength( c_void_p(font), POINTER(c_ubyte)(string) ) -> c_int
glutBitmapString(...)
glutBitmapString( c_void_p(font), POINTER(c_ubyte)(string) ) -> None
glutBitmapWidth(...)
glutBitmapWidth( c_void_p(font), c_int(character) ) -> c_int
glutChangeToMenuEntry(...)
glutChangeToMenuEntry( c_int(item), STRING(label), c_int(value) ) -> None
glutChangeToSubMenu(...)
glutChangeToSubMenu( c_int(item), STRING(label), c_int(value) ) -> None
glutCopyColormap(...)
glutCopyColormap( c_int(window) ) -> None
glutCreateSubWindow(...)
glutCreateSubWindow( c_int(window), c_int(x), c_int(y), c_int(width), c_int(height) ) -> c_int
glutCreateWindow(...)
glutCreateWindow( STRING(title) ) -> c_int
glutDetachMenu(...)
glutDetachMenu( c_int(button) ) -> None
glutDeviceGet(...)
glutDeviceGet( GLenum(query) ) -> c_int
glutEnterGameMode(...)
glutEnterGameMode(  ) -> c_int
glutEstablishOverlay(...)
glutEstablishOverlay(  ) -> None
glutExtensionSupported(...)
glutExtensionSupported( STRING(extension) ) -> c_int
glutForceJoystickFunc(...)
glutForceJoystickFunc(  ) -> None
glutFullScreen(...)
glutFullScreen(  ) -> None
glutFullScreenToggle(...)
glutFullScreenToggle( ) -> None
glutGameModeGet(...)
glutGameModeGet( GLenum(query) ) -> c_int
glutGameModeString(...)
glutGameModeString( STRING(string) ) -> None
glutGet(...)
glutGet( GLenum(query) ) -> c_int
glutGetColor(...)
glutGetColor( c_int(color), c_int(component) ) -> GLfloat
glutGetMenu(...)
glutGetMenu(  ) -> c_int
glutGetMenuData(...)
glutGetMenuData(  ) -> c_void_p
glutGetModeValues(...)
glutInitContextVersion( GLenum(mode), POINTER(GLint)(size) ) -> POINTER(GLint)
glutGetModifiers(...)
glutGetModifiers(  ) -> c_int
glutGetProcAddress(...)
glutGetProcAddress( STRING(procName) ) -> c_void_p
glutGetWindow(...)
glutGetWindow(  ) -> c_int
glutGetWindowData(...)
glutGetWindowData(  ) -> c_void_p
glutHideOverlay(...)
glutHideOverlay(  ) -> None
glutHideWindow(...)
glutHideWindow(  ) -> None
glutIconifyWindow(...)
glutIconifyWindow(  ) -> None
glutIgnoreKeyRepeat(...)
glutIgnoreKeyRepeat( c_int(ignore) ) -> None
glutInitContextFlags(...)
glutInitContextFlags( GLint(flags) ) -> None
glutInitContextProfile(...)
glutInitContextProfile( GLint(profile) ) -> None
glutInitContextVersion(...)
glutInitContextVersion( GLint(majorVersion), GLint(minorVersion) ) -> None
glutInitDisplayMode(...)
glutInitDisplayMode( c_uint(displayMode) ) -> None
glutInitDisplayString(...)
glutInitDisplayString( STRING(displayMode) ) -> None
glutInitWindowPosition(...)
glutInitWindowPosition( c_int(x), c_int(y) ) -> None
glutInitWindowSize(...)
glutInitWindowSize( c_int(width), c_int(height) ) -> None
glutLayerGet(...)
glutLayerGet( GLenum(query) ) -> c_int
glutLeaveGameMode(...)
glutLeaveGameMode(  ) -> None
glutLeaveMainLoop(...)
glutLeaveMainLoop(  ) -> None
glutMainLoop(...)
glutMainLoop(  ) -> None
glutMainLoopEvent(...)
glutMainLoopEvent(  ) -> None
glutPopWindow(...)
glutPopWindow(  ) -> None
glutPositionWindow(...)
glutPositionWindow( c_int(x), c_int(y) ) -> None
glutPostOverlayRedisplay(...)
glutPostOverlayRedisplay(  ) -> None
glutPostRedisplay(...)
glutPostRedisplay(  ) -> None
glutPostWindowOverlayRedisplay(...)
glutPostWindowOverlayRedisplay( c_int(window) ) -> None
glutPostWindowRedisplay(...)
glutPostWindowRedisplay( c_int(window) ) -> None
glutPushWindow(...)
glutPushWindow(  ) -> None
glutRemoveMenuItem(...)
glutRemoveMenuItem( c_int(item) ) -> None
glutRemoveOverlay(...)
glutRemoveOverlay(  ) -> None
glutReportErrors(...)
glutReportErrors(  ) -> None
glutReshapeWindow(...)
glutReshapeWindow( c_int(width), c_int(height) ) -> None
glutSetColor(...)
glutSetColor( c_int(color), GLfloat(red), GLfloat(green), GLfloat(blue) ) -> None
glutSetCursor(...)
glutSetCursor( c_int(cursor) ) -> None
glutSetIconTitle(...)
glutSetIconTitle( STRING(title) ) -> None
glutSetKeyRepeat(...)
glutSetKeyRepeat( c_int(repeatMode) ) -> None
glutSetMenu(...)
glutSetMenu( c_int(menu) ) -> None
glutSetMenuData(...)
glutSetMenuData( c_void_p(data) ) -> None
glutSetOption(...)
glutSetOption( GLenum(option_flag), c_int(value) ) -> None
glutSetWindow(...)
glutSetWindow( c_int(window) ) -> None
glutSetWindowData(...)
glutSetWindowData( c_void_p(data) ) -> None
glutSetWindowTitle(...)
glutSetWindowTitle( STRING(title) ) -> None
glutSetupVideoResizing(...)
glutSetupVideoResizing(  ) -> None
glutShowOverlay(...)
glutShowOverlay(  ) -> None
glutShowWindow(...)
glutShowWindow(  ) -> None
glutSolidCone(...)
glutSolidCone( GLdouble(base), GLdouble(height), GLint(slices), GLint(stacks) ) -> None
glutSolidCube(...)
glutSolidCube( GLdouble(size) ) -> None
glutSolidCylinder(...)
glutSolidCylinder( GLdouble(radius), GLdouble(height), GLint(slices), GLint(stacks) ) -> None
glutSolidDodecahedron(...)
glutSolidDodecahedron(  ) -> None
glutSolidIcosahedron(...)
glutSolidIcosahedron(  ) -> None
glutSolidOctahedron(...)
glutSolidOctahedron(  ) -> None
glutSolidRhombicDodecahedron(...)
glutSolidRhombicDodecahedron(  ) -> None
glutSolidSierpinskiSponge( num_levels,offset,scale )
pyConverters: num_levels=None, offset=CallFuncPyConverter( <built-in method asArray of...rraydatatype.ArrayDatatype object at 0x2fa29b0> ), scale=None
cConverters: num_levels=None, offset=getPyArgsName( 'offset' ), scale=None
cResolvers: Not Used
storeValues: Not Used
returnValues: returnPyArgument( 'offset' )
Wrapping Operation: glutSolidSierpinskiSponge( c_int(num_levels), arrays.GLdoubleArray(offset), GLdouble(scale) ) -> None
glutSolidSphere(...)
glutSolidSphere( GLdouble(radius), GLint(slices), GLint(stacks) ) -> None
glutSolidTeapot(...)
glutSolidTeapot( GLdouble(size) ) -> None
glutSolidTetrahedron(...)
glutSolidTetrahedron(  ) -> None
glutSolidTorus(...)
glutSolidTorus( GLdouble(innerRadius), GLdouble(outerRadius), GLint(sides), GLint(rings) ) -> None
glutStopVideoResizing(...)
glutStopVideoResizing(  ) -> None
glutStrokeCharacter(...)
glutStrokeCharacter( c_void_p(font), c_int(character) ) -> None
glutStrokeHeight(...)
glutStrokeHeight( c_void_p(font) ) -> GLfloat
glutStrokeLength(...)
glutStrokeLength( c_void_p(font), POINTER(c_ubyte)(string) ) -> c_int
glutStrokeString(...)
glutStrokeString( c_void_p(font), POINTER(c_ubyte)(string) ) -> None
glutStrokeWidth(...)
glutStrokeWidth( c_void_p(font), c_int(character) ) -> c_int
glutSwapBuffers(...)
glutSwapBuffers(  ) -> None
glutUseLayer(...)
glutUseLayer( GLenum(layer) ) -> None
glutVideoPan(...)
glutVideoPan( c_int(x), c_int(y), c_int(width), c_int(height) ) -> None
glutVideoResize(...)
glutVideoResize( c_int(x), c_int(y), c_int(width), c_int(height) ) -> None
glutVideoResizeGet(...)
glutVideoResizeGet( GLenum(query) ) -> c_int
glutWarpPointer(...)
glutWarpPointer( c_int(x), c_int(y) ) -> None
glutWireCone(...)
glutWireCone( GLdouble(base), GLdouble(height), GLint(slices), GLint(stacks) ) -> None
glutWireCube(...)
glutWireCube( GLdouble(size) ) -> None
glutWireCylinder(...)
glutWireCylinder( GLdouble(radius), GLdouble(height), GLint(slices), GLint(stacks) ) -> None
glutWireDodecahedron(...)
glutWireDodecahedron(  ) -> None
glutWireIcosahedron(...)
glutWireIcosahedron(  ) -> None
glutWireOctahedron(...)
glutWireOctahedron(  ) -> None
glutWireRhombicDodecahedron(...)
glutWireRhombicDodecahedron(  ) -> None
glutWireSierpinskiSponge( num_levels,offset,scale )
pyConverters: num_levels=None, offset=CallFuncPyConverter( <built-in method asArray of...rraydatatype.ArrayDatatype object at 0x2fa29b0> ), scale=None
cConverters: num_levels=None, offset=getPyArgsName( 'offset' ), scale=None
cResolvers: Not Used
storeValues: Not Used
returnValues: returnPyArgument( 'offset' )
Wrapping Operation: glutWireSierpinskiSponge( c_int(num_levels), arrays.GLdoubleArray(offset), GLdouble(scale) ) -> None
glutWireSphere(...)
glutWireSphere( GLdouble(radius), GLint(slices), GLint(stacks) ) -> None
glutWireTeapot(...)
glutWireTeapot( GLdouble(size) ) -> None
glutWireTetrahedron(...)
glutWireTetrahedron(  ) -> None
glutWireTorus(...)
glutWireTorus( GLdouble(innerRadius), GLdouble(outerRadius), GLint(sides), GLint(rings) ) -> None

 
Data
        ARRAY_TYPE_TO_CONSTANT = [('GLclampd', GL_DOUBLE), ('GLclampf', GL_FLOAT), ('GLfloat', GL_FLOAT), ('GLdouble', GL_DOUBLE), ('GLbyte', GL_BYTE), ('GLshort', GL_SHORT), ('GLint', GL_INT), ('GLubyte', GL_UNSIGNED_BYTE), ('GLushort', GL_UNSIGNED_SHORT), ('GLuint', GL_UNSIGNED_INT), ('GLenum', GL_UNSIGNED_INT)]
GLUT = <CDLL 'libglut.so.3', handle 276f470 at 2818050>
GLUT_ACCUM = GLUT_ACCUM
GLUT_ACTION_CONTINUE_EXECUTION = GLUT_ACTION_CONTINUE_EXECUTION
GLUT_ACTION_EXIT = GLUT_ACTION_EXIT
GLUT_ACTION_GLUTMAINLOOP_RETURNS = GLUT_ACTION_GLUTMAINLOOP_RETURNS
GLUT_ACTION_ON_WINDOW_CLOSE = GLUT_ACTION_ON_WINDOW_CLOSE
GLUT_ACTIVE_ALT = GLUT_ACTIVE_ALT
GLUT_ACTIVE_CTRL = GLUT_ACTIVE_CTRL
GLUT_ACTIVE_SHIFT = GLUT_ACTIVE_SHIFT
GLUT_ALLOW_DIRECT_CONTEXT = 1
GLUT_ALPHA = GLUT_ALPHA
GLUT_API_VERSION = GLUT_API_VERSION
GLUT_AUX = 4096
GLUT_AUX1 = 4096
GLUT_AUX2 = 8192
GLUT_AUX3 = 16384
GLUT_AUX4 = 32768
GLUT_BITMAP_8_BY_13 = c_void_p(140432626617664)
GLUT_BITMAP_9_BY_15 = c_void_p(140432626617728)
GLUT_BITMAP_HELVETICA_10 = c_void_p(140432626617760)
GLUT_BITMAP_HELVETICA_12 = c_void_p(140432626617792)
GLUT_BITMAP_HELVETICA_18 = c_void_p(140432626617696)
GLUT_BITMAP_TIMES_ROMAN_10 = c_void_p(140432626617920)
GLUT_BITMAP_TIMES_ROMAN_24 = c_void_p(140432626617888)
GLUT_BLUE = GLUT_BLUE
GLUT_BORDERLESS = 2048
GLUT_CAPTIONLESS = 1024
GLUT_COMPATIBILITY_PROFILE = 2
GLUT_CORE_PROFILE = 1
GLUT_CREATE_NEW_CONTEXT = GLUT_CREATE_NEW_CONTEXT
GLUT_CURSOR_BOTTOM_LEFT_CORNER = GLUT_CURSOR_BOTTOM_LEFT_CORNER
GLUT_CURSOR_BOTTOM_RIGHT_CORNER = GLUT_CURSOR_BOTTOM_RIGHT_CORNER
GLUT_CURSOR_BOTTOM_SIDE = GLUT_CURSOR_BOTTOM_SIDE
GLUT_CURSOR_CROSSHAIR = GLUT_CURSOR_CROSSHAIR
GLUT_CURSOR_CYCLE = GLUT_CURSOR_CYCLE
GLUT_CURSOR_DESTROY = GLUT_CURSOR_DESTROY
GLUT_CURSOR_FULL_CROSSHAIR = GLUT_CURSOR_FULL_CROSSHAIR
GLUT_CURSOR_HELP = GLUT_CURSOR_HELP
GLUT_CURSOR_INFO = GLUT_CURSOR_INFO
GLUT_CURSOR_INHERIT = GLUT_CURSOR_INHERIT
GLUT_CURSOR_LEFT_ARROW = GLUT_CURSOR_LEFT_ARROW
GLUT_CURSOR_LEFT_RIGHT = GLUT_CURSOR_LEFT_RIGHT
GLUT_CURSOR_LEFT_SIDE = GLUT_CURSOR_LEFT_SIDE
GLUT_CURSOR_NONE = GLUT_CURSOR_NONE
GLUT_CURSOR_RIGHT_ARROW = GLUT_CURSOR_RIGHT_ARROW
GLUT_CURSOR_RIGHT_SIDE = GLUT_CURSOR_RIGHT_SIDE
GLUT_CURSOR_SPRAY = GLUT_CURSOR_SPRAY
GLUT_CURSOR_TEXT = GLUT_CURSOR_TEXT
GLUT_CURSOR_TOP_LEFT_CORNER = GLUT_CURSOR_TOP_LEFT_CORNER
GLUT_CURSOR_TOP_RIGHT_CORNER = GLUT_CURSOR_TOP_RIGHT_CORNER
GLUT_CURSOR_TOP_SIDE = GLUT_CURSOR_TOP_SIDE
GLUT_CURSOR_UP_DOWN = GLUT_CURSOR_UP_DOWN
GLUT_CURSOR_WAIT = GLUT_CURSOR_WAIT
GLUT_DEBUG = GLUT_DEBUG
GLUT_DEPTH = GLUT_DEPTH
GLUT_DEVICE_IGNORE_KEY_REPEAT = GLUT_DEVICE_IGNORE_KEY_REPEAT
GLUT_DEVICE_KEY_REPEAT = GLUT_DEVICE_KEY_REPEAT
GLUT_DIRECT_RENDERING = 1
GLUT_DISPLAY_MODE_POSSIBLE = GLUT_DISPLAY_MODE_POSSIBLE
GLUT_DOUBLE = GLUT_DOUBLE
GLUT_DOWN = GLUT_DOWN
GLUT_ELAPSED_TIME = GLUT_ELAPSED_TIME
GLUT_ENTERED = GLUT_ENTERED
GLUT_FORCE_DIRECT_CONTEXT = 3
GLUT_FORCE_INDIRECT_CONTEXT = 0
GLUT_FORWARD_COMPATIBLE = GLUT_FORWARD_COMPATIBLE
GLUT_FULLY_COVERED = GLUT_FULLY_COVERED
GLUT_FULLY_RETAINED = GLUT_FULLY_RETAINED
GLUT_FULL_SCREEN = 1
GLUT_GAME_MODE_ACTIVE = GLUT_GAME_MODE_ACTIVE
GLUT_GAME_MODE_DISPLAY_CHANGED = GLUT_GAME_MODE_DISPLAY_CHANGED
GLUT_GAME_MODE_HEIGHT = GLUT_GAME_MODE_HEIGHT
GLUT_GAME_MODE_PIXEL_DEPTH = GLUT_GAME_MODE_PIXEL_DEPTH
GLUT_GAME_MODE_POSSIBLE = GLUT_GAME_MODE_POSSIBLE
GLUT_GAME_MODE_REFRESH_RATE = GLUT_GAME_MODE_REFRESH_RATE
GLUT_GAME_MODE_WIDTH = GLUT_GAME_MODE_WIDTH
GLUT_GREEN = GLUT_GREEN
GLUT_GUARD_CALLBACKS = False
GLUT_HAS_DIAL_AND_BUTTON_BOX = GLUT_HAS_DIAL_AND_BUTTON_BOX
GLUT_HAS_JOYSTICK = GLUT_HAS_JOYSTICK
GLUT_HAS_KEYBOARD = GLUT_HAS_KEYBOARD
GLUT_HAS_MOUSE = GLUT_HAS_MOUSE
GLUT_HAS_OVERLAY = GLUT_HAS_OVERLAY
GLUT_HAS_SPACEBALL = GLUT_HAS_SPACEBALL
GLUT_HAS_TABLET = GLUT_HAS_TABLET
GLUT_HIDDEN = GLUT_HIDDEN
GLUT_INDEX = GLUT_INDEX
GLUT_INIT_DISPLAY_MODE = GLUT_INIT_DISPLAY_MODE
GLUT_INIT_FLAGS = GLUT_INIT_FLAGS
GLUT_INIT_MAJOR_VERSION = GLUT_INIT_MAJOR_VERSION
GLUT_INIT_MINOR_VERSION = GLUT_INIT_MINOR_VERSION
GLUT_INIT_PROFILE = 515
GLUT_INIT_STATE = GLUT_INIT_STATE
GLUT_INIT_WINDOW_HEIGHT = GLUT_INIT_WINDOW_HEIGHT
GLUT_INIT_WINDOW_WIDTH = GLUT_INIT_WINDOW_WIDTH
GLUT_INIT_WINDOW_X = GLUT_INIT_WINDOW_X
GLUT_INIT_WINDOW_Y = GLUT_INIT_WINDOW_Y
GLUT_JOYSTICK_AXES = GLUT_JOYSTICK_AXES
GLUT_JOYSTICK_BUTTONS = GLUT_JOYSTICK_BUTTONS
GLUT_JOYSTICK_BUTTON_A = GLUT_JOYSTICK_BUTTON_A
GLUT_JOYSTICK_BUTTON_B = GLUT_JOYSTICK_BUTTON_B
GLUT_JOYSTICK_BUTTON_C = GLUT_JOYSTICK_BUTTON_C
GLUT_JOYSTICK_BUTTON_D = GLUT_JOYSTICK_BUTTON_D
GLUT_JOYSTICK_POLL_RATE = GLUT_JOYSTICK_POLL_RATE
GLUT_KEY_BEGIN = 6
GLUT_KEY_DELETE = 6
GLUT_KEY_DOWN = GLUT_KEY_DOWN
GLUT_KEY_END = GLUT_KEY_END
GLUT_KEY_F1 = GLUT_KEY_F1
GLUT_KEY_F10 = GLUT_KEY_F10
GLUT_KEY_F11 = GLUT_KEY_F11
GLUT_KEY_F12 = GLUT_KEY_F12
GLUT_KEY_F2 = GLUT_KEY_F2
GLUT_KEY_F3 = GLUT_KEY_F3
GLUT_KEY_F4 = GLUT_KEY_F4
GLUT_KEY_F5 = GLUT_KEY_F5
GLUT_KEY_F6 = GLUT_KEY_F6
GLUT_KEY_F7 = GLUT_KEY_F7
GLUT_KEY_F8 = GLUT_KEY_F8
GLUT_KEY_F9 = GLUT_KEY_F9
GLUT_KEY_HOME = GLUT_KEY_HOME
GLUT_KEY_INSERT = GLUT_KEY_INSERT
GLUT_KEY_LEFT = GLUT_KEY_LEFT
GLUT_KEY_NUM_LOCK = 6
GLUT_KEY_PAGE_DOWN = GLUT_KEY_PAGE_DOWN
GLUT_KEY_PAGE_UP = GLUT_KEY_PAGE_UP
GLUT_KEY_REPEAT_DEFAULT = GLUT_KEY_REPEAT_DEFAULT
GLUT_KEY_REPEAT_OFF = GLUT_KEY_REPEAT_OFF
GLUT_KEY_REPEAT_ON = GLUT_KEY_REPEAT_ON
GLUT_KEY_RIGHT = GLUT_KEY_RIGHT
GLUT_KEY_UP = GLUT_KEY_UP
GLUT_LAYER_IN_USE = GLUT_LAYER_IN_USE
GLUT_LEFT = GLUT_LEFT
GLUT_LEFT_BUTTON = GLUT_LEFT_BUTTON
GLUT_LUMINANCE = GLUT_LUMINANCE
GLUT_MENU_IN_USE = GLUT_MENU_IN_USE
GLUT_MENU_NOT_IN_USE = GLUT_MENU_NOT_IN_USE
GLUT_MENU_NUM_ITEMS = GLUT_MENU_NUM_ITEMS
GLUT_MIDDLE_BUTTON = GLUT_MIDDLE_BUTTON
GLUT_MULTISAMPLE = GLUT_MULTISAMPLE
GLUT_NORMAL = GLUT_NORMAL
GLUT_NORMAL_DAMAGED = GLUT_NORMAL_DAMAGED
GLUT_NOT_VISIBLE = GLUT_NOT_VISIBLE
GLUT_NUM_BUTTON_BOX_BUTTONS = GLUT_NUM_BUTTON_BOX_BUTTONS
GLUT_NUM_DIALS = GLUT_NUM_DIALS
GLUT_NUM_MOUSE_BUTTONS = GLUT_NUM_MOUSE_BUTTONS
GLUT_NUM_SPACEBALL_BUTTONS = GLUT_NUM_SPACEBALL_BUTTONS
GLUT_NUM_TABLET_BUTTONS = GLUT_NUM_TABLET_BUTTONS
GLUT_OVERLAY = GLUT_OVERLAY
GLUT_OVERLAY_DAMAGED = GLUT_OVERLAY_DAMAGED
GLUT_OVERLAY_POSSIBLE = GLUT_OVERLAY_POSSIBLE
GLUT_OWNS_JOYSTICK = GLUT_OWNS_JOYSTICK
GLUT_PARTIALLY_RETAINED = GLUT_PARTIALLY_RETAINED
GLUT_RED = GLUT_RED
GLUT_RENDERING_CONTEXT = GLUT_RENDERING_CONTEXT
GLUT_RGB = GLUT_RGB
GLUT_RGBA = GLUT_RGBA
GLUT_RIGHT_BUTTON = GLUT_RIGHT_BUTTON
GLUT_SCREEN_HEIGHT = GLUT_SCREEN_HEIGHT
GLUT_SCREEN_HEIGHT_MM = GLUT_SCREEN_HEIGHT_MM
GLUT_SCREEN_WIDTH = GLUT_SCREEN_WIDTH
GLUT_SCREEN_WIDTH_MM = GLUT_SCREEN_WIDTH_MM
GLUT_SINGLE = GLUT_SINGLE
GLUT_SRGB = 4096
GLUT_STENCIL = GLUT_STENCIL
GLUT_STEREO = GLUT_STEREO
GLUT_STROKE_MONO_ROMAN = c_void_p(140432626617824)
GLUT_STROKE_ROMAN = c_void_p(140432626617856)
GLUT_TRANSPARENT_INDEX = GLUT_TRANSPARENT_INDEX
GLUT_TRY_DIRECT_CONTEXT = 2
GLUT_UP = GLUT_UP
GLUT_USE_CURRENT_CONTEXT = GLUT_USE_CURRENT_CONTEXT
GLUT_VIDEO_RESIZE_HEIGHT = GLUT_VIDEO_RESIZE_HEIGHT
GLUT_VIDEO_RESIZE_HEIGHT_DELTA = GLUT_VIDEO_RESIZE_HEIGHT_DELTA
GLUT_VIDEO_RESIZE_IN_USE = GLUT_VIDEO_RESIZE_IN_USE
GLUT_VIDEO_RESIZE_POSSIBLE = GLUT_VIDEO_RESIZE_POSSIBLE
GLUT_VIDEO_RESIZE_WIDTH = GLUT_VIDEO_RESIZE_WIDTH
GLUT_VIDEO_RESIZE_WIDTH_DELTA = GLUT_VIDEO_RESIZE_WIDTH_DELTA
GLUT_VIDEO_RESIZE_X = GLUT_VIDEO_RESIZE_X
GLUT_VIDEO_RESIZE_X_DELTA = GLUT_VIDEO_RESIZE_X_DELTA
GLUT_VIDEO_RESIZE_Y = GLUT_VIDEO_RESIZE_Y
GLUT_VIDEO_RESIZE_Y_DELTA = GLUT_VIDEO_RESIZE_Y_DELTA
GLUT_VISIBLE = GLUT_VISIBLE
GLUT_WINDOW_ACCUM_ALPHA_SIZE = GLUT_WINDOW_ACCUM_ALPHA_SIZE
GLUT_WINDOW_ACCUM_BLUE_SIZE = GLUT_WINDOW_ACCUM_BLUE_SIZE
GLUT_WINDOW_ACCUM_GREEN_SIZE = GLUT_WINDOW_ACCUM_GREEN_SIZE
GLUT_WINDOW_ACCUM_RED_SIZE = GLUT_WINDOW_ACCUM_RED_SIZE
GLUT_WINDOW_ALPHA_SIZE = GLUT_WINDOW_ALPHA_SIZE
GLUT_WINDOW_BLUE_SIZE = GLUT_WINDOW_BLUE_SIZE
GLUT_WINDOW_BORDER_WIDTH = GLUT_WINDOW_BORDER_WIDTH
GLUT_WINDOW_BUFFER_SIZE = GLUT_WINDOW_BUFFER_SIZE
GLUT_WINDOW_COLORMAP_SIZE = GLUT_WINDOW_COLORMAP_SIZE
GLUT_WINDOW_CURSOR = GLUT_WINDOW_CURSOR
GLUT_WINDOW_DEPTH_SIZE = GLUT_WINDOW_DEPTH_SIZE
GLUT_WINDOW_DOUBLEBUFFER = GLUT_WINDOW_DOUBLEBUFFER
GLUT_WINDOW_FORMAT_ID = GLUT_WINDOW_FORMAT_ID
GLUT_WINDOW_GREEN_SIZE = GLUT_WINDOW_GREEN_SIZE
GLUT_WINDOW_HEADER_HEIGHT = GLUT_USE_CURRENT_CONTEXT
GLUT_WINDOW_HEIGHT = GLUT_WINDOW_HEIGHT
GLUT_WINDOW_NUM_CHILDREN = GLUT_WINDOW_NUM_CHILDREN
GLUT_WINDOW_NUM_SAMPLES = GLUT_WINDOW_NUM_SAMPLES
GLUT_WINDOW_PARENT = GLUT_WINDOW_PARENT
GLUT_WINDOW_RED_SIZE = GLUT_WINDOW_RED_SIZE
GLUT_WINDOW_RGBA = GLUT_WINDOW_RGBA
GLUT_WINDOW_STENCIL_SIZE = GLUT_WINDOW_STENCIL_SIZE
GLUT_WINDOW_STEREO = GLUT_WINDOW_STEREO
GLUT_WINDOW_WIDTH = GLUT_WINDOW_WIDTH
GLUT_WINDOW_X = GLUT_WINDOW_X
GLUT_WINDOW_Y = GLUT_WINDOW_Y
GLUT_XLIB_IMPLEMENTATION = GLUT_XLIB_IMPLEMENTATION
GL_BYTE = GL_BYTE
GL_DOUBLE = GL_DOUBLE
GL_FALSE = GL_FALSE
GL_FLOAT = GL_FLOAT
GL_HALF_NV = GL_HALF_NV
GL_INT = GL_INT
GL_SHORT = GL_SHORT
GL_TRUE = GL_TRUE
GL_UNSIGNED_BYTE = GL_UNSIGNED_BYTE
GL_UNSIGNED_INT = GL_UNSIGNED_INT
GL_UNSIGNED_INT64 = GL_UNSIGNED_INT64_AMD
GL_UNSIGNED_SHORT = GL_UNSIGNED_SHORT
GL_VOID_P = <object object>
GLvoid = None
HAVE_FREEGLUT = True
INITIALIZED = False
PLATFORM = <OpenGL.platform.glx.GLXPlatform object>
__file__ = '/home/mcfletch/pylive/OpenGLContext/glutvrmltestingcontext.py'
__name__ = 'OpenGLContext.glutvrmltestingcontext'
__package__ = 'OpenGLContext'
ctypes_version = [1, 1, 0]
glutButtonBoxFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutCheckLoop = <OpenGL.platform.baseplatform.glutCheckLoop object>
glutCloseFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutDialsFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutDisplayFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutEntryFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutIdleFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutJoystickFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutKeyboardFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutKeyboardUpFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutMenuDestroyFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutMenuStateFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutMenuStatusFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutMotionFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutMouseFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutMouseWheelFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutOverlayDisplayFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutPassiveMotionFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutReshapeFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutSpaceballButtonFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutSpaceballMotionFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutSpaceballRotateFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutSpecialFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutSpecialUpFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutTabletButtonFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutTabletMotionFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutTimerFunc = <OpenGL.GLUT.special.GLUTTimerCallback object>
glutVisibilityFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutWMCloseFunc = <OpenGL.GLUT.special.GLUTCallback object>
glutWindowStatusFunc = <OpenGL.GLUT.special.GLUTCallback object>
i = '0'
log = <logging.Logger object>
void = None