Sprite now uses vertex arrays
from OpenGL.GLU import *
import pygame
from pygame.locals import *
-from Numeric import array,reshape,concatenate
+from Numeric import array
from util import *
import TexMan
def gen_displaylist(self):
if self.displaylist == None:
self.displaylist = glGenLists(1)
+ x = -self.size[0]/2
+ y = -self.size[1]/2
+ vertexarray = array(
+ ((x,y,0),(x+self.tsize[0],y,0),
+ (x+self.tsize[0],y+self.tsize[1],0),
+ (x,y+self.tsize[1],0))
+ ,'f')
+ texcoordarray = array(
+ ((1.0,0.0),(1.0,1.0),(0.0,1.0),(0.0,0.0))
+ ,'f')
+ index = array((0,1,2,3),'i')
glNewList(self.displaylist, GL_COMPILE)
glEnable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D, self.texture)
glColor4fv(self.color)
- glBegin(GL_TRIANGLE_FAN)
- x = -self.size[0]/2
- y = -self.size[1]/2
- glTexCoord2d(1.0,0.0)
- glVertex3f(x, y, 0)
- glTexCoord2d(1.0,1.0)
- glVertex3f(x + self.tsize[0], y, 0)
- glTexCoord2d(0.0,1.0)
- glVertex3f(x + self.tsize[0], y + self.tsize[1], 0)
- glTexCoord2d(0.0,0.0)
- glVertex3f(x, y + self.tsize[1], 0)
- glEnd()
+ glVertexPointerf(vertexarray)
+ glTexCoordPointerf(texcoordarray)
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4)
glEndList()
#initialize pygame and setup an opengl display
pygame.init()
-pygame.display.set_mode(resolution, OPENGL|DOUBLEBUF|HARDWARE)
+pygame.display.set_mode(resolution, OPENGL|DOUBLEBUF|HWSURFACE)
#pygame.display.set_mode(resolution, DOUBLEBUF)
pygame.display.set_caption("bouncetest [loading]")
#glEnable(GL_DEPTH_TEST)
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST)
glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST)
+glEnableClientState(GL_VERTEX_ARRAY)
+glEnableClientState(GL_TEXTURE_COORD_ARRAY)
# POLYGON STIPPLING!?
#stipple = array([[n % 2 for n in range(0,32)] + [n % 2 for n in range(1,33)] for m in range(0,16)])