Skip to content

Instantly share code, notes, and snippets.

@madebyjeffrey
Created February 22, 2011 06:40
Show Gist options
  • Save madebyjeffrey/838301 to your computer and use it in GitHub Desktop.
Save madebyjeffrey/838301 to your computer and use it in GitHub Desktop.
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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment