// Path: app/src/main/java/com/demo/amazing/bean/Square.java
// public class Square {
//     private FloatBuffer vertexBuffer;
//     private ShortBuffer drawListBuffer;
// 
//     // number of coordinates per vertex in this array
//     static final int COORDS_PER_VERTEX = 3;
//     static float squareCoords[] = {-0.5f, 0.5f, 0.0f,   // top left
//             -0.5f, -0.5f, 0.0f,   // bottom left
//             0.5f, -0.5f, 0.0f,   // bottom right
//             0.5f, 0.5f, 0.0f}; // top right
// 
//     private short drawOrder[] = {0, 1, 2, 0, 2, 3}; // order to draw vertices
// 
//     public Square() {
//         // initialize vertex byte buffer for shape coordinates
//         ByteBuffer bb = ByteBuffer.allocateDirect(
//                 // (# of coordinate values * 4 bytes per float)
//                 squareCoords.length * 4);
//         bb.order(ByteOrder.nativeOrder());
//         vertexBuffer = bb.asFloatBuffer();
//         vertexBuffer.put(squareCoords);
//         vertexBuffer.position(0);
// 
//         // initialize byte buffer for the draw list
//         ByteBuffer dlb = ByteBuffer.allocateDirect(
//                 // (# of coordinate values * 2 bytes per short)
//                 drawOrder.length * 2);
//         dlb.order(ByteOrder.nativeOrder());
//         drawListBuffer = dlb.asShortBuffer();
//         drawListBuffer.put(drawOrder);
//         drawListBuffer.position(0);
//     }
// }
// 
// Path: app/src/main/java/com/demo/amazing/bean/Triangle.java
// public class Triangle {
// 
//     private FloatBuffer vertexBuffer;
// 
//     static final int COORDS_PER_VERTEX = 3;
// 
//     private final String vertexShaderCode =
//             "uniform mat4 uMVPMatrix;" +
//             "attribute vec4 vPosition; " +
//             "void main(){" + "" +
//             " gl_Position = " +
//             "uMVPMatrix * vPosition;" + "}";
// 
//     private final String fragmentShaderCode = "precision mediump float; " + "uniform vec4 vColor; " + "void main(){"
//             + " gl_FragColor = vColor;" + "}";
// 
//     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
//     };
// 
//     private final int program;
// 
//     private int positionHandle;
// 
//     private int colorHandle;
// 
//     private int mVPHandle;
// 
//     private final int vertexCount = triangleCoords.length / COORDS_PER_VERTEX;
// 
//     private final int vertexStride = COORDS_PER_VERTEX * 4;
// 
//     // Set color with red, green, blue and alpha (opacity) values
//     float color[] = {0.63671875f, 0.76953125f, 0.22265625f, 1.0f};
//     //float color[] = {0.0f, 1.0f, 0.0f, 1.0f};
//     public Triangle() {
//         ByteBuffer byteBuffer = ByteBuffer.allocateDirect(triangleCoords.length * 4);
// 
//         byteBuffer.order(ByteOrder.nativeOrder());
// 
//         vertexBuffer = byteBuffer.asFloatBuffer();
// 
//         vertexBuffer.put(triangleCoords);
//         vertexBuffer.position(0);
// 
//         int vertexShader = MyRender.loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
// 
//         int fragmentShader = MyRender.loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
// 
//         program = GLES20.glCreateProgram();
// 
//         GLES20.glAttachShader(program, vertexShader);
// 
//         GLES20.glAttachShader(program, fragmentShader);
// 
//         GLES20.glLinkProgram(program);
//     }
// 
//     public void draw(float[] mVPMatrix) {
// 
//         GLES20.glUseProgram(program);
// 
//         positionHandle = GLES20.glGetAttribLocation(program, "vPosition");
// 
// 
//         GLES20.glEnableVertexAttribArray(positionHandle);
// 
//         GLES20.glVertexAttribPointer(positionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride,
//                 vertexBuffer);
// 
//         colorHandle = GLES20.glGetUniformLocation(program, "vColor");
// 
//         GLES20.glUniform4fv(colorHandle, 1, color, 0);
// 
//         mVPHandle = GLES20.glGetUniformLocation(program, "uMVPMatrix");
// 
//         GLES20.glUniformMatrix4fv(mVPHandle, 1, false, mVPMatrix, 0);
// 
//         GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount);
// 
//         GLES20.glDisableVertexAttribArray(positionHandle);
// 
// 
//     }
// 
// }


import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
import com.demo.amazing.bean.Square;
import com.demo.amazing.bean.Triangle;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
package com.demo.amazing.widget;




/**
 * Created by hzsunyj on 17/5/2.
 */
public class MyRender implements GLSurfaceView.Renderer {

    private Triangle triangle;

// Path: app/src/main/java/com/demo/amazing/bean/Square.java
// public class Square {
//     private FloatBuffer vertexBuffer;
//     private ShortBuffer drawListBuffer;
// 
//     // number of coordinates per vertex in this array
//     static final int COORDS_PER_VERTEX = 3;
//     static float squareCoords[] = {-0.5f, 0.5f, 0.0f,   // top left
//             -0.5f, -0.5f, 0.0f,   // bottom left
//             0.5f, -0.5f, 0.0f,   // bottom right
//             0.5f, 0.5f, 0.0f}; // top right
// 
//     private short drawOrder[] = {0, 1, 2, 0, 2, 3}; // order to draw vertices
// 
//     public Square() {
//         // initialize vertex byte buffer for shape coordinates
//         ByteBuffer bb = ByteBuffer.allocateDirect(
//                 // (# of coordinate values * 4 bytes per float)
//                 squareCoords.length * 4);
//         bb.order(ByteOrder.nativeOrder());
//         vertexBuffer = bb.asFloatBuffer();
//         vertexBuffer.put(squareCoords);
//         vertexBuffer.position(0);
// 
//         // initialize byte buffer for the draw list
//         ByteBuffer dlb = ByteBuffer.allocateDirect(
//                 // (# of coordinate values * 2 bytes per short)
//                 drawOrder.length * 2);
//         dlb.order(ByteOrder.nativeOrder());
//         drawListBuffer = dlb.asShortBuffer();
//         drawListBuffer.put(drawOrder);
//         drawListBuffer.position(0);
//     }
// }
// 
// Path: app/src/main/java/com/demo/amazing/bean/Triangle.java
// public class Triangle {
// 
//     private FloatBuffer vertexBuffer;
// 
//     static final int COORDS_PER_VERTEX = 3;
// 
//     private final String vertexShaderCode =
//             "uniform mat4 uMVPMatrix;" +
//             "attribute vec4 vPosition; " +
//             "void main(){" + "" +
//             " gl_Position = " +
//             "uMVPMatrix * vPosition;" + "}";
// 
//     private final String fragmentShaderCode = "precision mediump float; " + "uniform vec4 vColor; " + "void main(){"
//             + " gl_FragColor = vColor;" + "}";
// 
//     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
//     };
// 
//     private final int program;
// 
//     private int positionHandle;
// 
//     private int colorHandle;
// 
//     private int mVPHandle;
// 
//     private final int vertexCount = triangleCoords.length / COORDS_PER_VERTEX;
// 
//     private final int vertexStride = COORDS_PER_VERTEX * 4;
// 
//     // Set color with red, green, blue and alpha (opacity) values
//     float color[] = {0.63671875f, 0.76953125f, 0.22265625f, 1.0f};
//     //float color[] = {0.0f, 1.0f, 0.0f, 1.0f};
//     public Triangle() {
//         ByteBuffer byteBuffer = ByteBuffer.allocateDirect(triangleCoords.length * 4);
// 
//         byteBuffer.order(ByteOrder.nativeOrder());
// 
//         vertexBuffer = byteBuffer.asFloatBuffer();
// 
//         vertexBuffer.put(triangleCoords);
//         vertexBuffer.position(0);
// 
//         int vertexShader = MyRender.loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
// 
//         int fragmentShader = MyRender.loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
// 
//         program = GLES20.glCreateProgram();
// 
//         GLES20.glAttachShader(program, vertexShader);
// 
//         GLES20.glAttachShader(program, fragmentShader);
// 
//         GLES20.glLinkProgram(program);
//     }
// 
//     public void draw(float[] mVPMatrix) {
// 
//         GLES20.glUseProgram(program);
// 
//         positionHandle = GLES20.glGetAttribLocation(program, "vPosition");
// 
// 
//         GLES20.glEnableVertexAttribArray(positionHandle);
// 
//         GLES20.glVertexAttribPointer(positionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, vertexStride,
//                 vertexBuffer);
// 
//         colorHandle = GLES20.glGetUniformLocation(program, "vColor");
// 
//         GLES20.glUniform4fv(colorHandle, 1, color, 0);
// 
//         mVPHandle = GLES20.glGetUniformLocation(program, "uMVPMatrix");
// 
//         GLES20.glUniformMatrix4fv(mVPHandle, 1, false, mVPMatrix, 0);
// 
//         GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, vertexCount);
// 
//         GLES20.glDisableVertexAttribArray(positionHandle);
// 
// 
//     }
// 
// }


// Path: app/src/main/java/com/demo/amazing/widget/MyRender.java
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
import com.demo.amazing.bean.Square;
import com.demo.amazing.bean.Triangle;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

package com.demo.amazing.widget;




/**
 * Created by hzsunyj on 17/5/2.
 */
public class MyRender implements GLSurfaceView.Renderer {

    private Triangle triangle;

    private Square square;