All pastes #760748 Raw Edit

Non-working

public text v1 · immutable
·published 2007-11-04 08:53 UTC
rendered paste body
import pygame
from OpenGL.GL import *
from OpenGL.GLU import *

def createTexture(w, h):
    texture = glGenTextures(1)
    glBindTexture(GL_TEXTURE_2D, texture)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
    return texture

def createEmptyTexture(w, h):
    texture = createTexture(w, h)
    data = [0, 0, 0, 0] * w * h
    glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, data)
    return texture

def createTextureFromFile(filename):
    surf = pygame.image.load(filename)
    w, h = surf.get_width(), surf.get_height()
    data = pygame.image.tostring(surf, "RGBA")
    texture = createTexture(w, h)
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data)
    return texture

def drawTexture(x, y, z, w, h, texture):
    glBindTexture(GL_TEXTURE_2D, texture)
    glBegin(GL_QUADS)
    glColor4f(1.0, 1.0, 1.0, 0.5)
    glTexCoord2f(0.0, 0.0)
    glVertex3d(x, y, z)
    glTexCoord2f(1.0, 0.0)
    glVertex3d(x + w, y, z)
    glTexCoord2f(1.0, 1.0)
    glVertex3d(x + w, y + h, z)
    glTexCoord2f(0.0, 1.0)
    glVertex3d(x, y + h, z)
    glEnd()

def initialize(width, height):
    pygame.init()
    pygame.display.init()
    resize(width, height)
    
def resize(w, h, fullscreen = False):
    if h == 0:
	    h = 1
    screen = pygame.display.set_mode((w, h), pygame.OPENGL | pygame.DOUBLEBUF)
    glViewport(0, 0, w, h)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45.0, float(w)/float(h), 0.1, 100.0)
    glMatrixMode(GL_MODELVIEW)
    glEnable(GL_TEXTURE_2D)
    glClearColor(0.0, 0.0, 0.0, 0.0)
    glClearDepth(1.0)
    glDepthFunc(GL_LESS)
    glDisable(GL_DEPTH_TEST)
    glEnable(GL_BLEND)
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
    glShadeModel(GL_SMOOTH)

if __name__ == "__main__":
    initialize(640, 480)
    texture = createTextureFromFile("deceptacon-logo.png")
    while True:
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        glLoadIdentity()
        glTranslate(0.0, 0.0, -5.0)
        drawTexture(-1.0, -1.0, 0.0, 2.0, 2.0, texture)
        pygame.display.flip()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                raise Exception("quit")
            elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                raise Exception("quit")