commit:ab56eaaba6a2fd1823613d76a20ee323d8218378
author:chip
committer:chip
date:Wed Nov 14 09:51:59 2007 +0000
parents:08dacba2c4c67881180feeae436211dfdcde2270
Collages changed to use display lists
diff --git a/Collage.py b/Collage.py
line changes: +53/-5
index c34f749..72b1e12
--- a/Collage.py
+++ b/Collage.py
@@ -1,15 +1,32 @@
 from Sprite import Sprite
 from OpenGL.GL import *
+from Numeric import array
+
+import TexMan
 
 class Collage:
 	tiles = None
 	position = (0,0)
+	displaylist = None
 
 	def __init__(self, file):
 		self.parse(file)
 	
 
 	def parse(self, file):
+		if self.displaylist == None:
+			self.displaylist = glGenLists(1)
+		glNewList(self.displaylist, GL_COMPILE)
+		glEnable(GL_TEXTURE_2D)
+		#glColor3bv(array((255,255,255)))
+		ctexture = None
+		ctexsize = None
+		vertexarray = []
+		texcoordarray = []
+		nvertices = 0
+		#maxvertices = glGetIntegerv(GL_MAX_ELEMENTS_VERTICES)
+		#maxindexes = glGetIntegerv(GL_MAX_ELEMENTS_INDICES)
+
 		self.tiles = []
 		mf = (1,1)
 		f = open(file,'r')
@@ -21,15 +38,46 @@ class Collage:
 			args = args[1:]
 			if cmd == 'tilesize':
 				mf = (int(args[0]),int(args[1]))
+			elif cmd == 'texture':
+				if nvertices > 0:	# dump vertex array
+					glVertexPointerf(array(vertexarray,'f'))
+					glTexCoordPointerf(array(texcoordarray,'f'))
+					print "drawing",nvertices,"vertices"
+					glDrawArrays(GL_QUADS, 0, 4)
+					vertexarray = []
+					texcoordarray = []
+					nvertices = 0
+				d = TexMan.load(args[0])
+				ctexture = d['texture']
+				ctexsize = d['tsize']
+				glBindTexture(GL_TEXTURE_2D, ctexture)
 			elif cmd == 'tile':
-				s = Sprite(args[0])
-				s.position = (int(args[1]) * mf[0], int(args[2]) * mf[1])
-				self.tiles.append(s)
+				x = int(args[0]) * mf[0]
+				y = int(args[1]) * mf[1]
+				vertexarray += [
+					(x,y,0),
+					(x+ctexsize[0],y,0),
+					(x+ctexsize[0],y+ctexsize[1],0),
+					(x,y+ctexsize[1],0)
+				]
+				texcoordarray += [
+					(1.0,0.0),(1.0,1.0),(0.0,1.0),(0.0,0.0)
+				]
+				nvertices += 4
+		f.close()
+		# Finally,
+		glVertexPointerf(array(vertexarray,'f'))
+		glTexCoordPointerf(array(texcoordarray,'f'))
+		#print "drawing",nvertices,"vertices"
+		#print vertexarray
+		#print texcoordarray
+		glDrawArrays(GL_QUADS, 0, nvertices)
+		#glDrawElementsui(GL_QUADS, array(range(0,nvertices),'i'))
+		glEndList()
 	
 
 	def draw(self):
 		glPushMatrix()
 		glTranslatef(self.position[0], self.position[1], 0.0)
-		for t in self.tiles:
-			t.draw()
+		glCallList(self.displaylist)
 		glPopMatrix()

diff --git a/Sprite.py b/Sprite.py
line changes: +1/-1
index 0c65a13..ea44ced
--- a/Sprite.py
+++ b/Sprite.py
@@ -72,7 +72,7 @@ class Sprite:
 			glColor4fv(self.color)
 			glVertexPointerf(vertexarray)
 			glTexCoordPointerf(texcoordarray)
-			glDrawArrays(GL_TRIANGLE_FAN, 0, 4)
+			glDrawArrays(GL_QUADS, 0, 4)
 			glEndList()
 
 

diff --git a/data/example1 b/data/example1
line changes: +17/-16
index f23eb41..74e3602
--- a/data/example1
+++ b/data/example1
@@ -1,19 +1,20 @@
 tilesize 64 64
-tile img/block.png 0 0
-tile img/block.png 1 0
-tile img/block.png 2 0
-tile img/block.png 3 0
-tile img/block.png 4 0
-tile img/block.png 5 0
-tile img/block.png 6 0
-tile img/block.png 7 0
-tile img/block.png 8 0
-tile img/block.png 9 0
+texture img/block.png
+tile 0 0
+tile 1 0
+tile 2 0
+tile 3 0
+tile 4 0
+tile 5 0
+tile 6 0
+tile 7 0
+tile 8 0
+tile 9 0
 
-tile img/block.png 4 1
-tile img/block.png 4 2
-tile img/block.png 4 3
-tile img/block.png 4 4
+tile 4 1
+tile 4 2
+tile 4 3
+tile 4 4
 
-tile img/block.png 6 1
-tile img/block.png 6 2
+tile 6 1
+tile 6 2

diff --git a/data/simple b/data/simple
line changes: +5/-4
index f6a934e..fb4e819
--- a/data/simple
+++ b/data/simple
@@ -1,5 +1,6 @@
 tilesize 64 64
-tile img/block.png 0 0
-tile img/block.png 0 1
-tile img/block.png 1 0
-tile img/block.png 1 1
+texture img/block.png
+tile 0 0
+tile 0 1
+tile 1 0
+tile 1 1

diff --git a/data/stars b/data/stars
line changes: +121/-120
index 1e82033..0f91ab4
--- a/data/stars
+++ b/data/stars
@@ -1,120 +1,121 @@
-tile img/star.png 232 421
-tile img/star.png 390 193
-tile img/star.png 548 66
-tile img/star.png 311 367
-tile img/star.png 430 12
-tile img/star.png 88 64
-tile img/star.png 90 123
-tile img/star.png 286 370
-tile img/star.png 263 100
-tile img/star.png 338 84
-tile img/star.png 231 47
-tile img/star.png 132 415
-tile img/star.png 399 183
-tile img/star.png 111 470
-tile img/star.png 445 67
-tile img/star.png 427 159
-tile img/star.png 237 103
-tile img/star.png 533 223
-tile img/star.png 26 409
-tile img/star.png 382 87
-tile img/star.png 507 82
-tile img/star.png 329 380
-tile img/star.png 381 417
-tile img/star.png 518 317
-tile img/star.png 378 197
-tile img/star.png 607 463
-tile img/star.png 502 274
-tile img/star.png 406 235
-tile img/star.png 185 249
-tile img/star.png 448 412
-tile img/star.png 418 29
-tile img/star.png 248 121
-tile img/star.png 177 85
-tile img/star.png 327 352
-tile img/star.png 466 39
-tile img/star.png 591 306
-tile img/star.png 106 95
-tile img/star.png 570 209
-tile img/star.png 163 466
-tile img/star.png 100 185
-tile img/star.png 376 469
-tile img/star.png 586 33
-tile img/star.png 383 251
-tile img/star.png 178 209
-tile img/star.png 121 211
-tile img/star.png 408 289
-tile img/star.png 539 222
-tile img/star.png 476 245
-tile img/star.png 282 274
-tile img/star.png 557 90
-tile img/star.png 249 80
-tile img/star.png 563 447
-tile img/star.png 18 229
-tile img/star.png 255 244
-tile img/star.png 358 354
-tile img/star.png 563 323
-tile img/star.png 292 28
-tile img/star.png 497 241
-tile img/star.png 379 67
-tile img/star.png 260 51
-tile img/star.png 159 163
-tile img/star.png 209 304
-tile img/star.png 541 28
-tile img/star.png 635 475
-tile img/star.png 479 130
-tile img/star.png 473 45
-tile img/star.png 127 308
-tile img/star.png 281 420
-tile img/star.png 332 28
-tile img/star.png 177 478
-tile img/star.png 413 12
-tile img/star.png 265 403
-tile img/star.png 216 147
-tile img/star.png 105 117
-tile img/star.png 64 417
-tile img/star.png 164 137
-tile img/star.png 131 416
-tile img/star.png 386 67
-tile img/star.png 511 111
-tile img/star.png 239 419
-tile img/star.png 600 445
-tile img/star.png 356 369
-tile img/star.png 314 266
-tile img/star.png 153 473
-tile img/star.png 239 221
-tile img/star.png 359 135
-tile img/star.png 288 133
-tile img/star.png 511 449
-tile img/star.png 234 401
-tile img/star.png 333 71
-tile img/star.png 40 78
-tile img/star.png 426 235
-tile img/star.png 251 195
-tile img/star.png 324 432
-tile img/star.png 25 334
-tile img/star.png 205 37
-tile img/star.png 219 284
-tile img/star.png 358 414
-tile img/star.png 260 395
-tile img/star.png 202 22
-tile img/star.png 594 64
-tile img/star.png 187 39
-tile img/star.png 71 231
-tile img/star.png 428 5
-tile img/star.png 180 302
-tile img/star.png 435 93
-tile img/star.png 10 161
-tile img/star.png 45 113
-tile img/star.png 224 99
-tile img/star.png 46 401
-tile img/star.png 196 465
-tile img/star.png 432 376
-tile img/star.png 194 342
-tile img/star.png 375 76
-tile img/star.png 437 174
-tile img/star.png 197 275
-tile img/star.png 208 92
-tile img/star.png 195 118
-tile img/star.png 618 202
-tile img/star.png 554 406
+texture img/star.png
+tile 232 421
+tile 390 193
+tile 548 66
+tile 311 367
+tile 430 12
+tile 88 64
+tile 90 123
+tile 286 370
+tile 263 100
+tile 338 84
+tile 231 47
+tile 132 415
+tile 399 183
+tile 111 470
+tile 445 67
+tile 427 159
+tile 237 103
+tile 533 223
+tile 26 409
+tile 382 87
+tile 507 82
+tile 329 380
+tile 381 417
+tile 518 317
+tile 378 197
+tile 607 463
+tile 502 274
+tile 406 235
+tile 185 249
+tile 448 412
+tile 418 29
+tile 248 121
+tile 177 85
+tile 327 352
+tile 466 39
+tile 591 306
+tile 106 95
+tile 570 209
+tile 163 466
+tile 100 185
+tile 376 469
+tile 586 33
+tile 383 251
+tile 178 209
+tile 121 211
+tile 408 289
+tile 539 222
+tile 476 245
+tile 282 274
+tile 557 90
+tile 249 80
+tile 563 447
+tile 18 229
+tile 255 244
+tile 358 354
+tile 563 323
+tile 292 28
+tile 497 241
+tile 379 67
+tile 260 51
+tile 159 163
+tile 209 304
+tile 541 28
+tile 635 475
+tile 479 130
+tile 473 45
+tile 127 308
+tile 281 420
+tile 332 28
+tile 177 478
+tile 413 12
+tile 265 403
+tile 216 147
+tile 105 117
+tile 64 417
+tile 164 137
+tile 131 416
+tile 386 67
+tile 511 111
+tile 239 419
+tile 600 445
+tile 356 369
+tile 314 266
+tile 153 473
+tile 239 221
+tile 359 135
+tile 288 133
+tile 511 449
+tile 234 401
+tile 333 71
+tile 40 78
+tile 426 235
+tile 251 195
+tile 324 432
+tile 25 334
+tile 205 37
+tile 219 284
+tile 358 414
+tile 260 395
+tile 202 22
+tile 594 64
+tile 187 39
+tile 71 231
+tile 428 5
+tile 180 302
+tile 435 93
+tile 10 161
+tile 45 113
+tile 224 99
+tile 46 401
+tile 196 465
+tile 432 376
+tile 194 342
+tile 375 76
+tile 437 174
+tile 197 275
+tile 208 92
+tile 195 118
+tile 618 202
+tile 554 406