def _render(self, rect): gl.enable(gl.SCISSOR_TEST) gl.enable(gl.CULL_FACE) if (not self._render_to_texture and self._depth_n_stencil) or \ (self._render_to_texture and self._fb_depth_n_stencil): gl.enable(gl.DEPTH_TEST) gl.enable(gl.DEPTH_STENCIL) gl.viewport(rect.x, rect.y, rect.width, rect.height) gl.scissor(rect.x, rect.y, rect.width, rect.height) for com in self._queue: com[0](*com[1:]) self._queue = [] gl.disable(gl.SCISSOR_TEST) gl.disable(gl.CULL_FACE) gl.disable(gl.DEPTH_TEST) gl.useProgram(0) gl.bindBuffer(gl.ARRAY_BUFFER, 0) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, 0) gl.bindFramebuffer(gl.FRAMEBUFFER, 0) gl.viewport(0.0, 0.0, self.stage.stageWidth, self.stage.stageHeight)
def setProgram(self, program): self._current_prog = program self._do(gl.useProgram, program.gl_program) gl.useProgram(program.gl_program)