Guest User

Untitled

a guest
Jul 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. class World(object):
  2. def __init__(self):
  3. self.verts_id = GLuint()
  4. glGenBuffers(1, self.verts_id)
  5. self.mesh = []
  6. for x in xrange(SIZE):
  7. for z in xrange(SIZE):
  8. self.mesh.extend((float(SIZE//2 - x), 0.0, float(SIZE//2 - z)))
  9. data = (GLfloat*len(self.mesh))(*self.mesh)
  10. glBindBuffer(GL_ARRAY_BUFFER, self.verts_id)
  11. glBufferData(GL_ARRAY_BUFFER, len(data)*4, data, GL_STATIC_DRAW)
  12.  
  13. self.index_id = GLuint()
  14. glGenBuffers(1, self.index_id)
  15. self.index = []
  16. for x in xrange(SIZE-1):
  17. for z in xrange(SIZE-1):
  18. self.index.extend((x*SIZE+z, x*SIZE+z+1, (x+1)*SIZE+z))
  19. self.index.extend((x*SIZE+z+1, (x+1)*SIZE+z, (x+1)*SIZE+z+1))
  20. data = (GLushort*len(self.index))(*self.index)
  21. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.index_id)
  22. glBufferData(GL_ELEMENT_ARRAY_BUFFER, len(data)*2, data, GL_STATIC_DRAW)
  23.  
  24.  
  25. def draw(self):
  26. glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
  27. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
  28. glLoadIdentity()
  29.  
  30. gluLookAt(0.0, 25.0, -45.0, 0.0, 0.0, 0.0, 0, 1, 0)
  31.  
  32. glEnableClientState(GL_VERTEX_ARRAY)
  33. glBindBuffer(GL_ARRAY_BUFFER, self.verts_id)
  34. glVertexPointer(3, GL_FLOAT, 0, 0)
  35.  
  36. glEnableClientState(GL_INDEX_ARRAY)
  37. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, self.index_id)
  38. glDrawElements(GL_TRIANGLES, len(self.index), GL_UNSIGNED_SHORT, 0)
  39.  
  40. glFlush()
Add Comment
Please, Sign In to add comment