Aaaaa988

Plane.java

Dec 11th, 2020 (edited)
381
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.example.user.newcurswork;
  2.  
  3. import java.nio.ByteBuffer;
  4. import java.nio.ByteOrder;
  5. import java.nio.FloatBuffer;
  6.  
  7. import android.opengl.GLES20;
  8.  
  9. public class Plane {
  10.     private final FloatBuffer planePosition;
  11.     private final FloatBuffer planeNormal;
  12.     private final FloatBuffer planeColor;
  13.  
  14.     Plane() {
  15.         float[] planePositionData = {
  16.                 -25.0f, -0.0f, -25.0f,
  17.                 -25.0f, -0.0f, 25.0f,
  18.                 25.0f, -0.0f, -25.0f,
  19.                 -25.0f, -0.0f, 25.0f,
  20.                 25.0f, -0.0f, 25.0f,
  21.                 25.0f, -0.0f, -25.0f
  22.         };
  23.         ByteBuffer bPos = ByteBuffer.allocateDirect(planePositionData.length * 4);
  24.         bPos.order(ByteOrder.nativeOrder());
  25.         planePosition = bPos.asFloatBuffer();
  26.  
  27.         float[] planeNormalData = {
  28.                 0.0f, 1.0f, 0.0f,
  29.                 0.0f, 1.0f, 0.0f,
  30.                 0.0f, 1.0f, 0.0f,
  31.                 0.0f, 1.0f, 0.0f,
  32.                 0.0f, 1.0f, 0.0f,
  33.                 0.0f, 1.0f, 0.0f
  34.         };
  35.         ByteBuffer bNormal = ByteBuffer.allocateDirect(planeNormalData.length * 4);
  36.         bNormal.order(ByteOrder.nativeOrder());
  37.         planeNormal = bNormal.asFloatBuffer();
  38.  
  39.         float[] planeColorData = {
  40.                 0.3f, 0.3f, 0.3f, 1.0f,
  41.                 0.3f, 0.3f, 0.3f, 1.0f,
  42.                 0.3f, 0.3f, 0.3f, 1.0f,
  43.                 0.3f, 0.3f, 0.3f, 1.0f,
  44.                 0.3f, 0.3f, 0.3f, 1.0f,
  45.                 0.3f, 0.3f, 0.3f, 1.0f
  46.         };
  47.         ByteBuffer bColor = ByteBuffer.allocateDirect(planeColorData.length * 4);
  48.         bColor.order(ByteOrder.nativeOrder());
  49.         planeColor = bColor.asFloatBuffer();
  50.  
  51.         planePosition.put(planePositionData).position(0);
  52.         planeNormal.put(planeNormalData).position(0);
  53.         planeColor.put(planeColorData).position(0);
  54.     }
  55.  
  56.     void render(int positionAttribute, int normalAttribute, int colorAttribute, boolean onlyPosition) {
  57.         planePosition.position(0);
  58.         planeNormal.position(0);
  59.         planeColor.position(0);
  60.  
  61.         GLES20.glVertexAttribPointer(positionAttribute, 3, GLES20.GL_FLOAT, false,
  62.                 0, planePosition);
  63.         GLES20.glEnableVertexAttribArray(positionAttribute);
  64.  
  65.         if (!onlyPosition) {
  66.             GLES20.glVertexAttribPointer(normalAttribute, 3, GLES20.GL_FLOAT, false,
  67.                     0, planeNormal);
  68.             GLES20.glEnableVertexAttribArray(normalAttribute);
  69.             GLES20.glVertexAttribPointer(colorAttribute, 4, GLES20.GL_FLOAT, false,
  70.                     0, planeColor);
  71.             GLES20.glEnableVertexAttribArray(colorAttribute);
  72.         }
  73.  
  74.         GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 6);
  75.     }
  76. }
RAW Paste Data