Skip to content

Instantly share code, notes, and snippets.

@davepape
Created October 8, 2013 03:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davepape/6879206 to your computer and use it in GitHub Desktop.
Save davepape/6879206 to your computer and use it in GitHub Desktop.
basic alpha blending - a semi-transparent square blended over an opaque square
import time, math
from pyglet.gl import *
window = pyglet.window.Window()
class AlphaSquare:
def __init__(self, color):
self.xpos = 0
self.ypos = 0
self.color = color
self.vlist = pyglet.graphics.vertex_list(4, ('v2f', [-128,-128, 128,-128, -128,128, 128,128]))
def draw(self):
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glColor4f(self.color[0],self.color[1],self.color[2],self.color[3])
glPushMatrix()
glTranslatef(self.xpos, self.ypos, 0)
self.vlist.draw(GL_TRIANGLE_STRIP)
glPopMatrix()
glDisable(GL_BLEND)
solidSquare = AlphaSquare([1, 1, 1, 1])
solidSquare.xpos = 320
solidSquare.ypos = 240
transpSquare = AlphaSquare([1, 0, 0, 0.5])
transpSquare.xpos = 320
transpSquare.ypos = 240
@window.event
def on_draw():
global transpSquare, solidSquare
glClearColor(0, 0.3, 0.5, 0)
glClear(GL_COLOR_BUFFER_BIT)
glLoadIdentity()
solidSquare.draw()
transpSquare.draw()
def update(dt):
global transpSquare
transpSquare.xpos = 320 + 128 * math.sin(time.time())
transpSquare.ypos = 240 + 128 * math.cos(time.time())
pyglet.clock.schedule_interval(update,1/60.0)
pyglet.app.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment