Revision cab7c165
Added by Leszek Koltunski about 7 years ago
src/main/java/org/distorted/library/MeshObject.java | ||
---|---|---|
35 | 35 |
{ |
36 | 36 |
private static final int BYTES_PER_FLOAT = 4; |
37 | 37 |
|
38 |
static final int POSITION_DATA_SIZE= 3;
|
|
39 |
static final int NORMAL_DATA_SIZE = 3;
|
|
40 |
static final int TEX_DATA_SIZE = 2;
|
|
38 |
static final int POS_DATA_SIZE= 3; |
|
39 |
static final int NOR_DATA_SIZE= 3;
|
|
40 |
static final int TEX_DATA_SIZE= 2; |
|
41 | 41 |
|
42 |
static final int OFFSET0 = 0;
|
|
43 |
static final int OFFSET1 = (POSITION_DATA_SIZE )*BYTES_PER_FLOAT;
|
|
44 |
static final int OFFSET2 = (POSITION_DATA_SIZE+NORMAL_DATA_SIZE )*BYTES_PER_FLOAT;
|
|
45 |
static final int VERTSIZE= (POSITION_DATA_SIZE+NORMAL_DATA_SIZE+TEX_DATA_SIZE)*BYTES_PER_FLOAT;
|
|
42 |
static final int OFFSET0 = 0; |
|
43 |
static final int OFFSET1 = (POS_DATA_SIZE )*BYTES_PER_FLOAT;
|
|
44 |
static final int OFFSET2 = (POS_DATA_SIZE+NOR_DATA_SIZE )*BYTES_PER_FLOAT;
|
|
45 |
static final int VERTSIZE= (POS_DATA_SIZE+NOR_DATA_SIZE+TEX_DATA_SIZE)*BYTES_PER_FLOAT;
|
|
46 | 46 |
|
47 | 47 |
int numVertices; |
48 | 48 |
FloatBuffer mVertAttribs; // packed: PosX,PosY,PosZ, NorX, NorY,NorZ, TexS, TexT |
49 | 49 |
int[] mAttVBO = new int[1]; // server-side packed vertex attributes |
50 |
int[] mAttTFO = new int[1]; // transform feedback |
|
50 | 51 |
|
51 | 52 |
final float zFactor; // strange workaround for the fact that we need to somehow store the 'depth' |
52 | 53 |
// of the Mesh. Used in DistortedEffects. See DistortedTexture.getDepth(). |
... | ... | |
76 | 77 |
GLES30.glBufferData(GLES30.GL_ARRAY_BUFFER, numVertices*VERTSIZE, mVertAttribs, GLES30.GL_STATIC_READ); |
77 | 78 |
GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0); |
78 | 79 |
} |
80 |
if( mAttTFO[0]<0 ) |
|
81 |
{ |
|
82 |
GLES30.glGenBuffers(1, mAttTFO, 0); |
|
83 |
GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mAttTFO[0]); |
|
84 |
GLES30.glBufferData(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, numVertices*VERTSIZE, null, GLES30.GL_STATIC_READ); |
|
85 |
GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0); |
|
86 |
} |
|
79 | 87 |
} |
80 | 88 |
|
81 | 89 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
88 | 96 |
GLES30.glDeleteBuffers(1, mAttVBO, 0); |
89 | 97 |
mAttVBO[0] = -1; |
90 | 98 |
} |
99 |
if( mAttTFO[0]>=0 ) |
|
100 |
{ |
|
101 |
GLES30.glDeleteBuffers(1, mAttTFO, 0); |
|
102 |
mAttTFO[0] = -1; |
|
103 |
} |
|
91 | 104 |
} |
92 | 105 |
|
93 | 106 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
95 | 108 |
void recreate() |
96 | 109 |
{ |
97 | 110 |
mAttVBO[0] = -1; |
111 |
mAttTFO[0] = -1; |
|
98 | 112 |
} |
99 | 113 |
|
100 | 114 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Beginning of support for actual Transform Feedback.