Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.niclas.rouge_like;
- import android.opengl.GLES31;
- import java.nio.ByteBuffer;
- import java.nio.ByteOrder;
- import java.nio.FloatBuffer;
- import java.nio.ShortBuffer;
- import static android.opengl.GLES20.GL_TRIANGLES;
- import static android.opengl.GLES32.GL_QUADS;
- public class Square {
- private FloatBuffer vertexBuffer;
- private ShortBuffer drawListBuffer;
- private final int mProgram;
- private int mPositionHandle;
- private int mColorHandle;
- private final String vertexShaderCode =
- "attribute vec4 vPosition;" +
- "void main() {" +
- " gl_Position = vPosition;" +
- "}";
- private final String fragmentShaderCode =
- "precision mediump float;" +
- "uniform vec4 vColor;" +
- "void main() {" +
- " gl_FragColor = vColor;" +
- "}";
- 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};
- // private final int vertexCount = squareCoords.length / COORDS_PER_VERTEX;
- private final int vertexStride = COORDS_PER_VERTEX * 4; // 4 bytes per vertex
- float color[] = {100f,0.0f,0.0f,1.0f};
- 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(GLES31.GL_VERTEX_SHADER, vertexShaderCode);
- int fragmentShader = MyGLRenderer.loadShader(GLES31.GL_FRAGMENT_SHADER, fragmentShaderCode);
- mProgram = GLES31.glCreateProgram();
- GLES31.glAttachShader(mProgram, vertexShader);
- GLES31.glAttachShader(mProgram, fragmentShader);
- GLES31.glLinkProgram(mProgram);
- }
- public void draw(){
- GLES31.glUseProgram(mProgram);
- mPositionHandle = GLES31.glGetAttribLocation(mProgram, "vPosition");
- GLES31.glEnableVertexAttribArray(mPositionHandle);
- GLES31.glVertexAttribPointer(mPositionHandle,COORDS_PER_VERTEX,GLES31.GL_FLOAT,false,vertexStride,vertexBuffer);
- GLES31.glDrawElements(GLES31.GL_TRIANGLES,drawOrder.length,GLES31.GL_UNSIGNED_SHORT,drawListBuffer);
- // GLES31.glDrawArrays(GL_TRIANGLES,0,6);
- mColorHandle = GLES31.glGetUniformLocation(mProgram, "vColor");
- GLES31.glUniform4fv(mColorHandle,1,color, 0);
- GLES31.glDisableVertexAttribArray(mPositionHandle);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement