title: Android OpenGL Point Clouds
body: <p>I've been trying to use </p>
  
  <pre><code>gl.glDrawElements(GL10.GL_POINTS, 4, GL10.GL_UNSIGNED_BYTE, vertexBuffer);
  </code></pre>
  
  <p>to draw 4 points on my screen with a vertex buffer, but I can't get it to work. All I want to draw is points, because eventually I want to make a point cloud display. If I have a large number of points (eventually), <strong>is vertex buffer the way to go?</strong> They won't be changing, but I will want to change the perspective and scale at which they are viewed.</p>
  
  <p>vertexBuffer setup:</p>
  
  <pre><code>private float vertices[] = {
      -3.0f,  1.0f, -2.0f,  // 0, Top Left
      -3.0f, -1.0f, 0.0f,  // 1, Bottom Left
      -2.0f, -1.0f, -2.0f,  // 2, Bottom Right
      -2.0f,  1.0f, 0.0f,  // 3, Top Right
      };
  
  
  // Our vertex buffer.
  private FloatBuffer vertexBuffer;
  ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
  vbb.order(ByteOrder.nativeOrder());
  vertexBuffer = vbb.asFloatBuffer();
  vertexBuffer.put(vertices);
  vertexBuffer.position(0);
  </code></pre>
  
  <p>This is my current draw call for my points (I don't want indices because shape drawing order doesn't matter to me):</p>
  
  <pre><code>public void draw(GL10 gl) {
      // Enabled the vertices buffer for writing and to be used during 
      // rendering.
      gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  
      gl.glPointSize(3);
  
      // Specifies the location and data format of an array of vertex
      // coordinates to use when rendering.
      gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
  
      gl.glDrawElements(GL10.GL_POINTS, 4, 
               GL10.GL_UNSIGNED_BYTE, vertexBuffer);
  
      // Disable the vertices buffer.
      gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
      // Disable face culling.
      gl.glDisable(GL10.GL_CULL_FACE);
  }
  </code></pre>
  
  <p>The program currently crashes when I call draw();</p>
  
  <p>Thank you!</p>