title: 3d cube didn't show correctly writen by pyglet
body: <p>Recently, I have started to learn openGL from this site => <a href="http://3dgep.com/?p=2365" rel="nofollow">http://3dgep.com/?p=2365</a> <br>
  and I encounter a problem. That's I didn't get the scene as the site shows.</p>
  
  <p>I post my code on this site:</p>
  
  <pre><code>import pyglet
  from pyglet.gl import *
  from pyglet import clock, window
  
  '''
      http://www.learnersdictionary.com/search/aspect
      a dictionary site
  
      http://www.opengl.org/sdk/docs/man2/
      opengl api reference
  
  '''
  
  def vector(type, *args):
      '''
          return a ctype array
          GLfloat
          GLuint
          ...
      '''
      return (type*len(args))(*args)
  
  
  
  class model:
      def __init__(self, vertices, colorMatrix, indice):
          self.vertices = vertices
          self.colorMatrix = colorMatrix
          self.indice = indice
          self.angle = 0
  
      def update(self):
          self.angle += 1
          self.angle %= 360
  
      def draw(self):
          glMatrixMode(GL_MODELVIEW)
          glLoadIdentity()
  
          glRotatef(self.angle, 1, 1, 0)
  
  
          glEnableClientState(GL_VERTEX_ARRAY)
          glEnableClientState(GL_COLOR_ARRAY)
  
          glColorPointer(3, GL_FLOAT, 0, vector(GLfloat, *self.colorMatrix))
          glVertexPointer(3, GL_FLOAT, 0, vector(GLfloat, *self.vertices))
  
          glDrawElements(GL_QUADS, len(self.indice), GL_UNSIGNED_INT, vector(GLuint, *self.indice))
  
  
          glDisableClientState(GL_COLOR_ARRAY)
          glDisableClientState(GL_VERTEX_ARRAY)
  
  
  
  class world:
      def __init__(self):
          self.element = []
  
      def update(self, dt):
          for obj in self.element:
              obj.update()
  
      def addModel(self, model):
          self.element.append(model)
  
      def draw(self):
          for obj in self.element:
              obj.draw()
  
  
  def setup():
      # look for GL_DEPTH_BUFFER_BIT
      glEnable(GL_DEPTH_TEST)
  
  
  
  
  
  
  
  win = window.Window(fullscreen=False, vsync=True, resizable=True, height=600, width=600)
  mWorld = world()
  
  cube = (
      1, 1, 1, #0
      -1, 1, 1, #1
      -1, -1, 1, #2
      1, -1, 1, #3
      1, 1, -1, #4
      -1, 1, -1, #5
      -1, -1, -1, #6
      1, -1, -1 #7
  )
  
  
  color = (
      1, 0, 0,
      1, 0, 0,
      1, 0, 0,
      1, 0, 0,
      0, 1, 0,
      0, 1, 0,
      0, 0, 1,
      0, 0, 1
  )
  
  indice = (
      0, 1, 2, 3, # front face
      0, 4, 5, 1, # top face
      4, 0, 3, 7, # right face
      1, 5, 6, 2, # left face
      3, 2, 6, 7 # bottom face
      #4, 7, 6, 5  #back face
  )
  
  obj = model(cube, color, indice)
  mWorld.addModel(obj)
  
  
  @win.event
  def on_resize(width, height):
      glViewport(0, 0, width, height)
      glMatrixMode(GL_PROJECTION)
      glLoadIdentity()
      glOrtho(-10, 10, -10, 10, -10, 10)
      glMatrixMode(GL_MODELVIEW)
      return pyglet.event.EVENT_HANDLED
  
  @win.event
  def on_draw():
      glClearColor(0.2, 0.2, 0.2, 0.8)
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
      mWorld.draw()
  
  
  pyglet.clock.schedule(mWorld.update)
  clock.set_fps_limit(30)
  setup()
  pyglet.app.run()
  </code></pre>
  
  <p>I think maybe I miss some important concepts so I can't get the correct result. Can anyone teach me what mistake I make? :(</p>
  
  <p>Furthermore, there is something strange.</p>
  
  <pre><code>indice = (
      0, 1, 2, 3, # front face
      0, 4, 5, 1, # top face
      4, 0, 3, 7, # right face
      1, 5, 6, 2, # left face
      3, 2, 6, 7 # bottom face
      #4, 7, 6, 5  #back face
  )
  </code></pre>
  
  <p>If I uncomment this line 
  from <pre>#4, 7, 6, 5 #back face</pre> to <pre> 4, 7, 6, 5 #back face</pre>
  the screen will show nothing...</p>