def setupPyglet(): window = pyglet.window.Window(width=width, height=height) pygl.glClearColor(0.05, 0.04, 0.04, 1) pygl.glPointSize(10) pygl.glLineWidth(5) pygl.glEnable(pygl.GL_BLEND) pygl.glBlendFunc(pygl.GL_SRC_ALPHA, pygl.GL_ONE_MINUS_SRC_ALPHA) def on_draw(dt): window.clear() global elapsedTime outputScene.drawScene(elapsedTime) if isRecording: write_to_video() elapsedTime += dt def write_to_video(): buffer = (pygl.GLubyte * (3 * window.width * window.height))(0) pygl.glReadPixels(0, 0, width, height, pygl.GL_RGB, pygl.GL_UNSIGNED_BYTE, buffer) pipe.stdin.write(buffer) pyglet.clock.schedule_interval(on_draw, 1 / 24)
def init(self): gl.glEnableClientState(gl.GL_VERTEX_ARRAY) gl.glEnableClientState(gl.GL_COLOR_ARRAY) gl.glEnable(gl.GL_DEPTH_TEST) gl.glEnable(gl.GL_POLYGON_SMOOTH) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST) gl.glCullFace(gl.GL_BACK) gl.glEnable(gl.GL_CULL_FACE) gl.glClearColor(*self.world.sky_color) vs_file = join(path.SOURCE, 'view', 'shaders', 'lighting.vert') vs = VertexShader(vs_file) fs_file = join(path.SOURCE, 'view', 'shaders', 'lighting.frag') fs = FragmentShader(fs_file) shader = ShaderProgram(vs, fs) shader.compile() shader.use() # create glyphs for every item added to the world before now for item in self.world: self.world_add_item(item) # create glyphs for every item added after this self.world.item_added += self.world_add_item
def draw_hp(self): full_hp = TILE_COSTS[self.type] if full_hp == math.inf: return percent = int((full_hp - self.hp) / full_hp * 4) if 0 < percent < 4: # TODO: Move this to the main function gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) get_tile(percent, 3).blit(self.x, self.y)
def main_loop(self): clock.set_fps_limit(30) nodeSize = 5 timer = 0 while not self.has_exit: self.dispatch_events() self.clear() # White, so reset the colour glColor4f(1, 1, 1, 1) gl.glLineWidth(1) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) glColor4f(0, 0, 0, 1.0) clock.tick()
def draw(self, viewport): gl.glClearColor(183 / 255.0, 196 / 255.0, 200 / 255.0, 1) gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) x1 = viewport.tl.x x2 = viewport.br.x backgrounds = [ (self.clouds, self.clouds.width), (self.fg, self.fg.width), ] for img, w in backgrounds: cx = x1 - x1 % w - w while cx < x2: img.blit(cx, 0) cx += w
def draw(self, viewport): gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) alt = viewport.bl.y h = viewport.height w = viewport.width c1 = self.gradient.colour(alt) c2 = self.gradient.colour(alt + 10000) o = v(0, 0) x = v(w, 0) y = v(0, h) vs = [o, x, x + y, y] cs = [c1, c1, c2, c2] pyglet.graphics.draw(4, gl.GL_QUADS, ('v2f', list(walk(vs))), ('c3f', list(walk(cs))) )