package edu.union; import java.nio.FloatBuffer; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.opengl.GLU; /** * http://www.zeuscmd.com/tutorials/opengles/10-Transformations.php * @author bburns */ public class GLTutorialFour extends GLTutorialBase { float[] triangle = new float[] { -0.25f, -0.25f, 0.0f, 0.25f, -0.25f, 0.0f, -0.25f, 0.25f, 0.0f }; float[] square = new float[] { -0.25f, -0.25f, 0.0f, 0.25f, -0.25f, 0.0f, -0.25f, 0.25f, 0.0f, 0.25f, 0.25f, 0.0f }; float[] colors = new float[] { 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1 }; FloatBuffer squareBuff; FloatBuffer triangleBuff; FloatBuffer colorBuff; float xrot = 0.0f; float yrot = 0.0f; public GLTutorialFour(Context c) { super(c, 20); squareBuff = makeFloatBuffer(square); triangleBuff = makeFloatBuffer(triangle); colorBuff = makeFloatBuffer(colors); } protected void init(GL10 gl) { // Setup background color gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Smooth shading gl.glShadeModel(GL10.GL_SMOOTH); } public void onDrawFrame(GL10 gl) { xrot += 1f; yrot += 1f; // Clear screen gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // Scene view matrix gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); gl.glPushMatrix(); gl.glTranslatef(-0.25f,0.0f,-2f); gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f); // Setup triangle data and draw it. gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triangleBuff); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuff); gl.glEnableClientState(GL10.GL_COLOR_ARRAY); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); // Reset to identity gl.glPopMatrix(); // Clear the color array gl.glDisableClientState(GL10.GL_COLOR_ARRAY); // Translation to square location. gl.glTranslatef(0.25f, 0.0f, -2f); gl.glRotatef(yrot, 0, 1, 0); // Setup square data & draw it gl.glVertexPointer(3, GL10.GL_FLOAT, 0, squareBuff); gl.glColor4f(0.25f, 0.25f, 0.75f, 1.0f); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); } }