summaryrefslogtreecommitdiff
path: root/samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java
diff options
context:
space:
mode:
authorJoe Fernandez <joefernandez@google.com>2012-06-14 15:10:46 -0700
committerJoe Fernandez <joefernandez@google.com>2013-08-22 10:25:33 -0700
commit66f6fe66331469618b4edf1e1e163a28ba5dea44 (patch)
treec6ee7aafed29a5b040cd292a9e6829ecfe8d3943 /samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java
parentabb260a280af25500b2d5c95890c9af116981f4d (diff)
Sample code for OpenGL Android training class
( Original Id: Ib1650025a3c4b018c60d70ede3f25113660f68d8 ) Change-Id: I1d760b75d1f2bfe1ec90c71471867577bd146241
Diffstat (limited to 'samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java')
-rw-r--r--samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java85
1 files changed, 85 insertions, 0 deletions
diff --git a/samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java b/samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java
new file mode 100644
index 000000000..e207f9281
--- /dev/null
+++ b/samples/OpenGL/HelloOpenGLES10/src/com/example/android/opengl/Triangle.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.opengl;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+import javax.microedition.khronos.opengles.GL10;
+
+/**
+ * A two-dimensional triangle for use as a drawn object in OpenGL ES 1.0/1.1.
+ */
+public class Triangle {
+
+ private final FloatBuffer vertexBuffer;
+
+ // number of coordinates per vertex in this array
+ static final int COORDS_PER_VERTEX = 3;
+ static float triangleCoords[] = {
+ // in counterclockwise order:
+ 0.0f, 0.622008459f, 0.0f,// top
+ -0.5f, -0.311004243f, 0.0f,// bottom left
+ 0.5f, -0.311004243f, 0.0f // bottom right
+ };
+
+ float color[] = { 0.63671875f, 0.76953125f, 0.22265625f, 0.0f };
+
+ /**
+ * Sets up the drawing object data for use in an OpenGL ES context.
+ */
+ public Triangle() {
+ // initialize vertex byte buffer for shape coordinates
+ ByteBuffer bb = ByteBuffer.allocateDirect(
+ // (number of coordinate values * 4 bytes per float)
+ triangleCoords.length * 4);
+ // use the device hardware's native byte order
+ bb.order(ByteOrder.nativeOrder());
+
+ // create a floating point buffer from the ByteBuffer
+ vertexBuffer = bb.asFloatBuffer();
+ // add the coordinates to the FloatBuffer
+ vertexBuffer.put(triangleCoords);
+ // set the buffer to read the first coordinate
+ vertexBuffer.position(0);
+ }
+
+ /**
+ * Encapsulates the OpenGL ES instructions for drawing this shape.
+ *
+ * @param gl - The OpenGL ES context in which to draw this shape.
+ */
+ public void draw(GL10 gl) {
+ // Since this shape uses vertex arrays, enable them
+ gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
+
+ // draw the shape
+ gl.glColor4f( // set color:
+ color[0], color[1],
+ color[2], color[3]);
+ gl.glVertexPointer( // point to vertex data:
+ COORDS_PER_VERTEX,
+ GL10.GL_FLOAT, 0, vertexBuffer);
+ gl.glDrawArrays( // draw shape:
+ GL10.GL_TRIANGLES, 0,
+ triangleCoords.length / COORDS_PER_VERTEX);
+
+ // Disable vertex array drawing to avoid
+ // conflicts with shapes that don't use it
+ gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
+ }
+}