def configure_event(widget, event, data): '''The "configure_event" signal handler. Any processing required when the OpenGL-capable drawing area is re-configured should be done here. Almost always it will be used to resize the OpenGL viewport when the window is resized.''' allocation = widget.get_allocation() w = allocation.width h = allocation.height # OpenGL BEGIN if not GtkGLExt.widget_begin_gl(widget): return False GL.glViewport(0, 0, w, h) GL.glMatrixMode(GL.GL_PROJECTION) GL.glLoadIdentity() GL.glOrtho(-50., 50., -50., 50., -1., 1.) GL.glMatrixMode(GL.GL_MODELVIEW) GL.glLoadIdentity() GtkGLExt.widget_end_gl(widget, False) # OpenGL END return True
def realize(widget, data): '''The "realize" signal handler. All the OpenGL initialization should be performed here, such as default background colour, certain states etc.''' # OpenGL BEGIN if not GtkGLExt.widget_begin_gl(widget): return GL.glClearColor(0., 0., 0., 0.) GL.glShadeModel(GL.GL_FLAT) GtkGLExt.widget_end_gl(widget, False)
def draw (widget, cr, data): '''The "draw" signal handler. All the OpenGL re-drawing should be done here. This is repeatedly called as the painting routine every time the 'draw' event is signalled.''' # OpenGL BEGIN if not GtkGLExt.widget_begin_gl(widget): return False GL.glClear(GL.GL_COLOR_BUFFER_BIT) GL.glPushMatrix() GL.glRotatef(spin, 0., 0., 1.) GL.glColor3f(1., 1., 1.) GL.glRectf(-25., -25., 25., 25.) GL.glPopMatrix() GtkGLExt.widget_end_gl(widget, True) # OpenGL END return True
def __enter__(self): #self.context = GtkGLExt.widget_create_gl_context(self.widget) assert GtkGLExt.widget_begin_gl(self.widget)