Project

General

Profile

« Previous | Next » 

Revision 6f2d931d

Added by Leszek Koltunski over 5 years ago

Added a new attribute to vertices of a MeshBase object: the vec3 'inflate' vector.
This vector describes the direction where the vertex needs to be moved when we 'inflate' the whole mesh.
If the mesh is locally smooth, this is simply the normal vector; otherwise (for example in the corners of the MeshCubes) - not.

Currently the new attribute is always set to (1,0,0) and not used yet.

View differences:

src/main/java/org/distorted/library/mesh/MeshBase.java
39 39
 */
40 40
public abstract class MeshBase
41 41
   {
42
   static final int POS_DATA_SIZE= 3;
43
   static final int NOR_DATA_SIZE= 3;
44
   static final int TEX_DATA_SIZE= 2;
42
   private static final int POS_DATA_SIZE= 3;
43
   private static final int NOR_DATA_SIZE= 3;
44
   private static final int INF_DATA_SIZE= 3;
45
   private static final int TEX_DATA_SIZE= 2;
46

  
47
   static final int POS_ATTRIB   = 0;
48
   static final int NOR_ATTRIB   = POS_DATA_SIZE;
49
   static final int INF_ATTRIB   = POS_DATA_SIZE + NOR_DATA_SIZE;
50
   static final int TEX_ATTRIB   = POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE;
51
   static final int VERT_ATTRIBS = POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE + TEX_DATA_SIZE;
45 52

  
46 53
   private static final int BYTES_PER_FLOAT = 4;
47 54

  
48
   private static final int OFFSET_POS =                                                        0;
49
   private static final int OFFSET_NOR = (POS_DATA_SIZE                         )*BYTES_PER_FLOAT;
50
   private static final int OFFSET_TEX = (POS_DATA_SIZE+NOR_DATA_SIZE           )*BYTES_PER_FLOAT;
55
   private static final int OFFSET_POS = POS_ATTRIB*BYTES_PER_FLOAT;
56
   private static final int OFFSET_NOR = NOR_ATTRIB*BYTES_PER_FLOAT;
57
   private static final int OFFSET_INF = INF_ATTRIB*BYTES_PER_FLOAT;
58
   private static final int OFFSET_TEX = TEX_ATTRIB*BYTES_PER_FLOAT;
51 59

  
52
   private static final int TFSIZE  = (POS_DATA_SIZE+POS_DATA_SIZE              )*BYTES_PER_FLOAT;
53
   private static final int VERTSIZE= (POS_DATA_SIZE+NOR_DATA_SIZE+TEX_DATA_SIZE)*BYTES_PER_FLOAT;
60
   private static final int TFSIZE  = (POS_DATA_SIZE+POS_DATA_SIZE                            )*BYTES_PER_FLOAT;
61
   private static final int VERTSIZE= (POS_DATA_SIZE+NOR_DATA_SIZE+INF_DATA_SIZE+TEX_DATA_SIZE)*BYTES_PER_FLOAT;
54 62

  
55 63
   private boolean mShowNormals;       // when rendering this mesh, draw normal vectors?
56 64
   private DistortedBuffer mVBO, mTFO; // main vertex buffer and transform feedback buffer
......
128 136
     GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, mVBO.mIndex[0] );
129 137
     GLES31.glVertexAttribPointer(program.mAttribute[0], MeshBase.POS_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_POS);
130 138
     GLES31.glVertexAttribPointer(program.mAttribute[1], MeshBase.NOR_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_NOR);
131
     GLES31.glVertexAttribPointer(program.mAttribute[2], MeshBase.TEX_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_TEX);
139
     GLES31.glVertexAttribPointer(program.mAttribute[2], MeshBase.INF_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_INF);
140
     GLES31.glVertexAttribPointer(program.mAttribute[3], MeshBase.TEX_DATA_SIZE, GLES31.GL_FLOAT, false, MeshBase.VERTSIZE, MeshBase.OFFSET_TEX);
132 141
     GLES31.glBindBuffer(GLES31.GL_ARRAY_BUFFER, 0);
133 142
     }
134 143

  

Also available in: Unified diff