Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package demo.com.cube;
- import android.content.Context;
- import android.opengl.GLSurfaceView;
- import java.nio.ByteBuffer;
- import java.nio.ByteOrder;
- import java.nio.FloatBuffer;
- import javax.microedition.khronos.egl.EGLConfig;
- import javax.microedition.khronos.opengles.GL10;
- import javax.microedition.khronos.opengles.GL11;
- /**
- * Created by octavian.salcianu on 3/17/2017.
- */
- public class SquareRenderer implements GLSurfaceView.Renderer{
- private Square square;
- private Square square2;
- private float mTransY;
- private float mAngle;
- private Context context;
- public final static int SS_SUNLIGHT = GL10.GL_LIGHT0;
- public SquareRenderer(Context context) {
- this.context = context;
- float squareColorsYMCA[] = {
- 1.0f, 1.0f, 0.0f, 1.0f,
- 0.0f, 1.0f, 1.0f, 1.0f,
- 0.0f, 0.0f, 0.0f, 1.0f,
- 1.0f, 0.0f, 1.0f, 1.0f
- };
- float squareColorsRGBA[] = {
- 1.0f, 0.0f, 0.0f, 1.0f,
- 0.0f, 1.0f, 0.0f, 1.0f,
- 0.0f, 0.0f, 1.0f, 1.0f,
- 1.0f, 1.0f, 1.0f, 1.0f
- };
- this.square = new Square(squareColorsYMCA);
- this.square2 = new Square(squareColorsRGBA);
- }
- @Override
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- //gl.glDisable(GL10.GL_DITHER);
- gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
- gl.glClearColor(256,256,256,0);
- gl.glEnable(GL10.GL_CULL_FACE);
- gl.glShadeModel(GL10.GL_SMOOTH);
- gl.glEnable(GL10.GL_DEPTH_TEST);
- //int resid = R.drawable.hedly;
- //square.createTexture(gl, this.context, resid);
- }
- @Override
- public void onSurfaceChanged(GL10 gl, int width, int height) {
- gl.glViewport(0, 0, width, height);
- gl.glMatrixMode(GL10.GL_PROJECTION);
- gl.glLoadIdentity();
- float ratio = (float) width / height;
- gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
- }
- /*
- private void initLighting(GL10 gl) {
- float[] green = {1.0f, 1.0f, 1.0f, 1.0f};
- float[] position = {0.0f, 5.0f, 0.0f, 1.0f};
- float[] red = {1.0f, 0.0f, 0,0f, 1.0f};
- gl.glLightfv(SS_SUNLIGHT, GL10.GL_POSITION, makeFloatBuffer(position));
- gl.glLightfv(SS_SUNLIGHT, GL10.GL_DIFFUSE, makeFloatBuffer(green));
- //gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, makeFloatBuffer(red));
- //gl.glLightfv(SS_SUNLIGHT,GL10.GL_SPECULAR, makeFloatBuffer(red));
- //gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, makeFloatBuffer(green));
- gl.glShadeModel(GL10.GL_SMOOTH);
- gl.glEnable(GL10.GL_LIGHTING);
- gl.glEnable(SS_SUNLIGHT);
- //gl.glEnable(GL10.GL_COLOR_MATERIAL);
- }
- protected static FloatBuffer makeFloatBuffer(float[] array) {
- ByteBuffer bb = ByteBuffer.allocateDirect(array.length*4);
- bb.order(ByteOrder.nativeOrder());
- FloatBuffer fb = bb.asFloatBuffer();
- fb.put(array);
- fb.position(0);
- return fb;
- }
- */
- @Override
- public void onDrawFrame(GL10 gl) {
- /*
- gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
- gl.glMatrixMode(GL10.GL_MODELVIEW);
- gl.glLoadIdentity();
- gl.glTranslatef(0.0f, (float) Math.sin(mTransY), -3.0f);
- mTransY += 0.075f;
- gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
- gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
- square.draw(gl);
- */
- gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
- gl.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
- gl.glMatrixMode(GL11.GL_MODELVIEW);
- gl.glEnable(GL10.GL_BLEND);
- gl.glLoadIdentity();
- gl.glTranslatef(0.0f,(float)Math.sin(mTransY), -3.0f);
- //gl.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
- square.draw(gl);
- gl.glLoadIdentity();
- gl.glTranslatef((float)(Math.sin(mTransY)/2.0f),0.0f, -2.9f);
- //gl.glColor4f(1.0f, 1.0f, 0.0f, 1.0f);
- //gl.glColorMask(true, false, true, true);
- square2.draw(gl);
- mTransY += .075f;
- }
- }
- package demo.com.cube;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.opengl.GLUtils;
- import java.nio.ByteBuffer;
- import java.nio.ByteOrder;
- import java.nio.FloatBuffer;
- import javax.microedition.khronos.opengles.GL10;
- import javax.microedition.khronos.opengles.GL11;
- /**
- * Created by octavian.salcianu on 3/17/2017.
- */
- public class Square {
- private FloatBuffer mFVertexBuffer;
- private ByteBuffer mColorBuffer;
- private ByteBuffer mIndexBuffer;
- private FloatBuffer mColorBufferFloat;
- public FloatBuffer mTextureBuffer;
- float[] textureCoords = {
- 0.0f, 0.0f,
- 1.0f, 0.0f,
- 0.0f, 1.0f,
- 1.0f, 1.0f
- };
- private int[] textures = new int[1];
- public Square(float colorsArray[]) {
- float vertices[] = {
- -1.0f, -1.0f,
- 1.0f, -1.0f,
- -1.0f, 1.0f,
- 1.0f, 1.0f
- };
- byte maxColor=(byte)255;
- byte colors[] = {
- 0, 0, maxColor, 0,
- 0, 0, maxColor, 0,
- 0, 0, maxColor, 0,
- 0, 0, maxColor, 0,
- };
- byte indices[] = {
- 0, 3, 1,
- 0, 2, 3
- };
- ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
- vbb.order(ByteOrder.nativeOrder());
- mFVertexBuffer = vbb.asFloatBuffer();
- mFVertexBuffer.put(vertices);
- mFVertexBuffer.position(0);
- mColorBuffer = ByteBuffer.allocateDirect(colors.length);
- mColorBuffer.put(colors);
- mColorBuffer.position(0);
- ByteBuffer cbb = ByteBuffer.allocateDirect(colorsArray.length * 4);
- cbb.order(ByteOrder.nativeOrder());
- mColorBufferFloat = cbb.asFloatBuffer();
- mColorBufferFloat.put(colorsArray);
- mColorBufferFloat.position(0);
- mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
- mIndexBuffer.put(indices);
- mIndexBuffer.position(0);
- ByteBuffer tbb = ByteBuffer.allocateDirect(textureCoords.length * 4);
- tbb.order(ByteOrder.nativeOrder());
- mTextureBuffer = tbb.asFloatBuffer();
- mTextureBuffer.put(textureCoords);
- mTextureBuffer.position(0);
- }
- public void draw(GL10 gl) {
- gl.glFrontFace(GL11.GL_CW);
- gl.glVertexPointer(2, GL11.GL_FLOAT, 0, mFVertexBuffer);
- //gl.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 0, mColorBuffer);
- gl.glColorPointer(4, GL11.GL_FLOAT, 0, mColorBufferFloat);
- gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
- gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
- //gl.glEnable(GL10.GL_TEXTURE_2D);
- gl.glEnable(GL10.GL_BLEND);
- //gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
- gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE);
- //gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
- //gl.glTexCoordPointer(2, GL10.GL_FLOAT,0, mTextureBuffer);
- //gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
- gl.glDrawElements(gl.GL_TRIANGLES, 6, gl.GL_UNSIGNED_BYTE, mIndexBuffer);
- }
- /*
- public void createTexture(GL10 gl, Context contextRegf, int resource) {
- Bitmap image = BitmapFactory.decodeResource(contextRegf.getResources(), resource);
- gl.glGenTextures(1, textures, 0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
- GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, image, 0);
- gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
- gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
- image.recycle();
- }*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement