class PbufferGrabber(object): """A render-to texture mechanism using pbuffers. Requires pbuffer extensions. Currently only implemented in GLX. Not working yet, very untested """ def grab (self, texture): self.pbuf = Pbuffer(director.window, [ GLX_CONFIG_CAVEAT, GLX_NONE, GLX_RED_SIZE, 8, GLX_GREEN_SIZE, 8, GLX_BLUE_SIZE, 8, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, 1, ]) def before_render (self, texture): self.pbuf.switch_to() gl.glViewport(0, 0, self.pbuf.width, self.pbuf.height) gl.glMatrixMode(gl.GL_PROJECTION) gl.glLoadIdentity() gl.glOrtho(0, self.pbuf.width, 0, self.pbuf.height, -1, 1) gl.glMatrixMode(gl.GL_MODELVIEW) gl.glEnable (gl.GL_TEXTURE_2D) def after_render (self, texture): buffer = image.get_buffer_manager().get_color_buffer() texture.blit_into (buffer, 0, 0, 0) director.window.switch_to()
def grab (self, texture): self.pbuf = Pbuffer(director.window, [ GLX_CONFIG_CAVEAT, GLX_NONE, GLX_RED_SIZE, 8, GLX_GREEN_SIZE, 8, GLX_BLUE_SIZE, 8, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, 1, ])