commit:025fb806d34246e4250e5f7bf22c3a18758caa37
author:chip
committer:chip
date:Tue Nov 13 06:32:32 2007 +0000
parents:0dbf0d969d6d9cd665209ffc0b27820069f7a930
Sprite now uses vertex arrays
diff --git a/Sprite.py b/Sprite.py
line changes: +15/-13
index 191b9bb..da58c32
--- a/Sprite.py
+++ b/Sprite.py
@@ -2,7 +2,7 @@ from OpenGL.GL import *
 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
@@ -30,22 +30,24 @@ class Sprite:
 	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()
 
 

diff --git a/bouncetest.py b/bouncetest.py
line changes: +3/-1
index 48d8ce0..b600609
--- a/bouncetest.py
+++ b/bouncetest.py
@@ -27,7 +27,7 @@ except IndexError:
 
 #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]")
 
@@ -47,6 +47,8 @@ glEnable(GL_CULL_FACE)
 #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)])