68 lines
2.1 KiB
Java
68 lines
2.1 KiB
Java
package com.codigoparallevar.minicards.rendering;
|
|
|
|
import android.opengl.GLES20;
|
|
|
|
import java.nio.ByteBuffer;
|
|
import java.nio.ByteOrder;
|
|
import java.nio.FloatBuffer;
|
|
import java.nio.ShortBuffer;
|
|
import java.sql.SQLInvalidAuthorizationSpecException;
|
|
|
|
public class Square {
|
|
|
|
private final String vertexShaderCode =
|
|
"attribute vec4 vPosition;" +
|
|
"void main(){" +
|
|
"gl_Position = vPosition;" +
|
|
"}";
|
|
|
|
private final String fragmentShaderCode =
|
|
"precision medium float;" +
|
|
"uniform vec4 vColor;" +
|
|
"void main(){" +
|
|
"gl_FragColor = vColor;" +
|
|
"}";
|
|
private final int mProgram;
|
|
|
|
|
|
private FloatBuffer vertexBuffer;
|
|
private ShortBuffer drawListBuffer;
|
|
|
|
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(){
|
|
ByteBuffer bb = ByteBuffer.allocateDirect(squareCoords.length * 4);
|
|
bb.order(ByteOrder.nativeOrder());
|
|
|
|
vertexBuffer = bb.asFloatBuffer();
|
|
vertexBuffer.put(squareCoords);
|
|
vertexBuffer.position(0);
|
|
|
|
ByteBuffer dlb = ByteBuffer.allocateDirect(drawOrder.length * 2);
|
|
dlb.order(ByteOrder.nativeOrder());
|
|
drawListBuffer = dlb.asShortBuffer();
|
|
drawListBuffer.put(drawOrder);
|
|
drawListBuffer.position(0);
|
|
|
|
|
|
int vertexShader = MyGlRenderer.loadShader(GLES20.GL_VERTEX_SHADER,
|
|
vertexShaderCode);
|
|
int fragmentShader = MyGlRenderer.loadShader(GLES20.GL_FRAGMENT_SHADER,
|
|
fragmentShaderCode);
|
|
|
|
mProgram = GLES20.glCreateProgram();
|
|
GLES20.glAttachShader(mProgram, vertexShader);
|
|
GLES20.glAttachShader(mProgram, fragmentShader);
|
|
|
|
GLES20.glLinkProgram(mProgram);
|
|
}
|
|
}
|