Code example for FloatBuffer

Methods: capacity, glVertexAttribPointer, position

0
    GLES20.glEnableVertexAttribArray( posHandle );
    // Utils.checkGlErrors( "glEnableVertexAttribArray" ); 
     
    GLES20.glUniformMatrix4fv( mvpHandle, 1, false, mvpMatrix, 0 );
    // Utils.checkGlErrors( "glUniformMatrix4fv" ); 
    GLES20.glVertexAttribPointer( posHandle, 3, GLES20.GL_FLOAT, false, 0,
        ellipse );
    // Utils.checkGlErrors( "glVertexAttribPointer" ); 
     
    if ( color1 != null ) {
      if ( color2 == null ) {
        color2 = color1;
      } 
      GLES20.glUniform4fv( colHandle1, 1, color1, 0 );
      // Utils.checkGlErrors( "glUniform4fv" ); 
      GLES20.glUniform4fv( colHandle2, 1, color2, 0 );
      // Utils.checkGlErrors( "glUniform4fv" ); 
      GLES20.glUniform2f( gradientHandle, gradientX, gradientY );
      // Utils.checkGlErrors( "glUniform2f" ); 
      GLES20.glUniform1f( radiusHandle, 0.5f * radius );
      // Utils.checkGlErrors( "glUniform1f" ); 
       
      ellipse.position( 0 );
      // Utils.checkGlErrors( "glUniform4fv" ); 
      GLES20.glDrawArrays( GLES20.GL_TRIANGLE_FAN, 0, ellipse.capacity() / 3 );
      // Utils.checkGlErrors( "glDrawArrays" ); 
    } 
     
    if ( color3 != null ) {
      GLES20.glLineWidth( 5f );
      GLES20.glUniform4fv( colHandle1, 1, color3, 0 );
      // Utils.checkGlErrors( "glUniform4fv" ); 
      GLES20.glUniform4fv( colHandle2, 1, color3, 0 );
      // Utils.checkGlErrors( "glUniform4fv" ); 
      ellipse.position( 0 );
      GLES20.glDrawArrays( GLES20.GL_LINE_STRIP, 1,
          (ellipse.capacity() / 3) - 1 );
    } 
     
    GLES20.glDisableVertexAttribArray( posHandle );
    // Utils.checkGlErrors( "glEnableVertexAttribArray" );