Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class World(object):
- def __init__(self):
- self.verts_id = GLuint()
- glGenBuffers(1, self.verts_id)
- self.mesh = []
- for x in xrange(SIZE):
- for z in xrange(SIZE):
- self.mesh.extend((float(SIZE//2 - x), 0.0, float(SIZE//2 - z)))
- data = (GLfloat*len(self.mesh))(*self.mesh)
- glBindBuffer(GL_ARRAY_BUFFER, self.verts_id)
- glBufferData(GL_ARRAY_BUFFER, len(data)*4, data, GL_STATIC_DRAW)
- self.index_id = GLuint()
- glGenBuffers(1, self.index_id)
- self.index = []
- for x in xrange(SIZE-1):
- for z in xrange(SIZE-1):
- self.index.extend((x*SIZE+z, x*SIZE+z+1, (x+1)*SIZE+z))
- self.index.extend((x*SIZE+z+1, (x+1)*SIZE+z, (x+1)*SIZE+z+1))
- data = (GLushort*len(self.index))(*self.index)
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.index_id)
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, len(data)*2, data, GL_STATIC_DRAW)
- def draw(self):
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
- glLoadIdentity()
- gluLookAt(0.0, 25.0, -45.0, 0.0, 0.0, 0.0, 0, 1, 0)
- glEnableClientState(GL_VERTEX_ARRAY)
- glBindBuffer(GL_ARRAY_BUFFER, self.verts_id)
- glVertexPointer(3, GL_FLOAT, 0, 0)
- glEnableClientState(GL_INDEX_ARRAY)
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.index_id)
- glDrawElements(GL_TRIANGLES, len(self.index), GL_UNSIGNED_SHORT, 0)
- glFlush()
Add Comment
Please, Sign In to add comment