Plane.java
上传用户:gyyuli
上传日期:2013-07-09
资源大小:3050k
文件大小:2k
源码类别:

J2ME

开发平台:

Java

  1. import javax.microedition.m3g.*;
  2. class Plane
  3. {
  4.   // define a square in plane xy
  5.   private final static short POINTS[] = new short[]
  6.   {
  7.     (short) 1, (short) 1, (short) 0,
  8.     (short) 1, (short) -1, (short) 0,
  9.     (short) -1, (short) 1, (short) 0,
  10.     (short) -1, (short) -1, (short) 0,
  11.   };
  12.   // define the texture coordinates
  13.   private final static short TEXTCOORDINATES[] = new short[]
  14.   {
  15.     (short) 1, (short) 1,
  16.     (short) 0, (short) 1,
  17.     (short) 1, (short) 0,
  18.     (short) 0, (short) 0,
  19.   };
  20.   // triangle strip indices
  21.   private final static int INDICES[] =
  22.   {
  23.     2, 3, 0,
  24.     1, 0, 3,
  25.     0, 3, 2,
  26.     3, 0, 1
  27.   };
  28.   // strip lengths
  29.   private final static int[] LENGTHS = new int[] {3, 3, 3, 3};
  30.   // these arrays are the same for each plane
  31.   private final static VertexArray POSITIONS_ARRAY, TEXTURE_ARRAY;
  32.   private final static IndexBuffer INDEX_BUFFER;
  33.   private Transform wallTransform = new Transform();
  34.   private float textureRepeat;
  35.   static
  36.   {
  37.     // initialize the common arrays
  38.     POSITIONS_ARRAY = new VertexArray(POINTS.length / 3, 3, 2);
  39.     POSITIONS_ARRAY.set(0, POINTS.length / 3, POINTS);
  40.     TEXTURE_ARRAY = new VertexArray(TEXTCOORDINATES.length / 2, 2, 2);
  41.     TEXTURE_ARRAY.set(0, TEXTCOORDINATES.length / 2, TEXTCOORDINATES);
  42.     INDEX_BUFFER = new TriangleStripArray(INDICES, LENGTHS);
  43.   }
  44.   // Builds a new plane with a given transform)
  45.   // and the texture repeated n times
  46.   Plane(Transform wallTransform, float textureRepeat)
  47.   {
  48.     this.wallTransform = wallTransform;
  49.     this.textureRepeat = textureRepeat;
  50.   }
  51.   // Build the mesh
  52.   Mesh createMesh()
  53.   {
  54.     VertexBuffer vertexBuffer = new VertexBuffer();
  55.     vertexBuffer.setPositions(POSITIONS_ARRAY, 1.0f, null);
  56.     vertexBuffer.setTexCoords(0,
  57.                               TEXTURE_ARRAY,
  58.                               (float) textureRepeat, null);
  59.     Mesh mesh = new Mesh(vertexBuffer, INDEX_BUFFER, null);
  60.     mesh.setTransform(wallTransform);
  61.     return mesh;
  62.   }
  63. }