Revision 6f2d931d
Added by Leszek Koltunski over 5 years ago
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
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.