Skip to content

Instantly share code, notes, and snippets.

@davepape
Created October 8, 2013 03:55
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/6879244 to your computer and use it in GitHub Desktop.
Save davepape/6879244 to your computer and use it in GitHub Desktop.
smooth shading of alpha values - applies same RGB, but different alpha to the top and bottom of a square
import time, math
from pyglet.gl import *
window = pyglet.window.Window()
class AlphaSquare2:
def __init__(self, color1, color2):
self.xpos = 0
self.ypos = 0
colors = color1 + color1 + color2 + color2
self.vlist = pyglet.graphics.vertex_list(4, ('v2f', [-128,-128, 128,-128, -128,128, 128,128]), ('c4f', colors))
def draw(self):
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glPushMatrix()
glTranslatef(self.xpos, self.ypos, 0)
self.vlist.draw(GL_TRIANGLE_STRIP)
glPopMatrix()
glDisable(GL_BLEND)
solidSquare = AlphaSquare2([1, 1, 1, 1], [1, 1, 1, 1])
solidSquare.xpos = 320
solidSquare.ypos = 240
transpSquare = AlphaSquare2([1, 0, 0, 0.9], [1, 0, 0, 0])
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