The following code shows how to create pyramid.
Main Activity Java code
package com.java2s.myapplication3.app; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; /*w w w . j a v a 2s . c om*/ import javax.microedition.khronos.opengles.GL10; import javax.microedition.khronos.egl.EGLConfig; import android.app.Activity; import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView.Renderer; import android.opengl.GLU; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.view.WindowManager; public class MainActivity extends Activity { private GLSurfaceView glView; private ColouredPyramid pyramid; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); glView = new GLSurfaceView(this); glView.setRenderer(new MyOpenGLRenderer()); setContentView(glView); } class MyOpenGLRenderer implements Renderer { @Override public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f, 100.0f); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { pyramid = new ColouredPyramid(); } @Override public void onDrawFrame(GL10 gl) { gl.glClearColor(0.0f, 0.0f, 0.0f, 1f); gl.glClear(GL10.GL_COLOR_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -10.0f); pyramid.draw(gl); } } } /** * @author tamas * */ class ColouredPyramid { private FloatBuffer vertexBuffer; private static final int VERTEX_SIZE = (3 + 4) * 4; private float vertices[] = { 0.0f, 1.0f, 0.0f, 1, 0, 0, 1, // V1 - red -1.0f, 0.0f, 0.0f, 1, 0, 0, 1, // V2 - red 0.0f, 0.0f, -1.0f, 1, 0, 0, 1, // V3 - red 0.0f, 1.0f, 0.0f, 0, 1, 0, 1, // V1 - green 0.0f, 0.0f, -1.0f, 0, 1, 0, 1, // V3 - green 1.0f, 0.0f, 0.0f, 0, 1, 0, 1, // V4 - green 0.0f, 1.0f, 0.0f, 0, 0, 1, 1, // V1 - blue 1.0f, 0.0f, 0.0f, 0, 0, 1, 1, // V4 - blue -1.0f, 0.0f, 0.0f, 0, 0, 1, 1, // V2 - blue }; private float rotation = 0.1f; public ColouredPyramid() { ByteBuffer byteBuffer = ByteBuffer.allocateDirect(ColouredPyramid.VERTEX_SIZE * 3 * 4); byteBuffer.order(ByteOrder.nativeOrder()); vertexBuffer = byteBuffer.asFloatBuffer(); vertexBuffer.put(vertices); vertexBuffer.flip(); } public void draw(GL10 gl) { rotation += 1.0f; gl.glRotatef(rotation, 1f, 1f, 1f); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glEnableClientState(GL10.GL_COLOR_ARRAY); vertexBuffer.position(0); gl.glVertexPointer(3, GL10.GL_FLOAT, ColouredPyramid.VERTEX_SIZE, vertexBuffer); vertexBuffer.position(3); gl.glColorPointer(4, GL10.GL_FLOAT, ColouredPyramid.VERTEX_SIZE, vertexBuffer); gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3 * 3); gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); gl.glDisableClientState(GL10.GL_COLOR_ARRAY); } }