4 from OpenGL.GL import *
\r
14 class VertexArray(object):
\r
15 def __init__(self, vertices):
\r
16 self.vertices=vertices
\r
19 return "<VertexArray %d>" % len(self.vertices)
\r
23 glEnableClientState(GL_VERTEX_ARRAY)
\r
24 glVertexPointer(3, GL_FLOAT, 0, self.vertices)
\r
26 glDrawArrays(GL_TRIANGLES, 0, len(self.vertices))
\r
28 glDisableClientState(GL_VERTEX_ARRAY)
\r
41 class VertexArrayWithUV(object):
\r
42 def __init__(self, vertices, uvarray):
\r
43 self.vertices=vertices
\r
44 self.uvarray=uvarray
\r
47 return "<VertexArrayWithUV %d>" % len(self.vertices)
\r
51 glEnableClientState(GL_VERTEX_ARRAY)
\r
52 glVertexPointer(3, GL_FLOAT, 0, self.vertices)
\r
54 glEnableClientState(GL_TEXTURE_COORD_ARRAY)
\r
55 glTexCoordPointer(2, GL_FLOAT, 0, self.uvarray)
\r
57 triangle_count=int(len(self.vertices)/3)
\r
58 glDrawArrays(GL_TRIANGLES, 0, triangle_count)
\r
60 glDisableClientState(GL_TEXTURE_COORD_ARRAY)
\r
61 glDisableClientState(GL_VERTEX_ARRAY)
\r
73 class IndexedVertexArray(object):
\r
87 def addVertex(self, pos, normal, color, uv, b0, b1, w0):
\r
96 def addMaterial(self, material):
\r
97 self.materials.append(material)
\r
99 self.indicesMap[material]=indices
\r
104 glEnableClientState(GL_VERTEX_ARRAY)
\r
105 glVertexPointer(4, GL_FLOAT, 0, self.vertices)
\r
107 for m in self.materials:
\r
109 indices=self.indicesMap[m]
\r
111 glDrawElements(GL_TRIANGLES, len(indices), GL_UNSIGNED_INT, indices)
\r
113 glDisableClientState(GL_VERTEX_ARRAY)
\r
115 def optimize(self):
\r
117 #for v in self.vertexArrayMap.values():
\r
118 # v.vertices=numpy.array(v.vertices, 'f')
\r