| 42 |
42 |
private final int BYTESFLOAT = 4;
|
| 43 |
43 |
private final int POSITION = 3;
|
| 44 |
44 |
|
| 45 |
|
private final boolean USEPOINTS=true;
|
|
45 |
private final boolean USEPOINTS=false;
|
| 46 |
46 |
|
| 47 |
47 |
private GLSurfaceView mView;
|
| 48 |
48 |
private DistortedProgram mFeedbackProgram;
|
| ... | ... | |
| 68 |
68 |
|
| 69 |
69 |
GLES30.glEnable(GLES30.GL_RASTERIZER_DISCARD);
|
| 70 |
70 |
GLES30.glBeginTransformFeedback( USEPOINTS ? GLES30.GL_POINTS : GLES30.GL_TRIANGLES);
|
| 71 |
|
GLES30.glDrawArrays( USEPOINTS ? GLES30.GL_POINTS : GLES30.GL_TRIANGLE_STRIP, 0, mVertices);
|
|
71 |
GLES30.glDrawArrays( USEPOINTS ? GLES30.GL_POINTS : GLES30.GL_TRIANGLES, 0, mVertices);
|
| 72 |
72 |
|
| 73 |
73 |
int error = GLES30.glGetError();
|
| 74 |
74 |
|
| ... | ... | |
| 81 |
81 |
GLES30.glDisable(GLES30.GL_RASTERIZER_DISCARD);
|
| 82 |
82 |
GLES30.glFlush();
|
| 83 |
83 |
|
| 84 |
|
int numVertices = 3*(mVertices);
|
| 85 |
|
|
| 86 |
|
Buffer mappedBuffer = GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, numVertices*POSITION*BYTESFLOAT, GLES30.GL_MAP_READ_BIT);
|
|
84 |
Buffer mappedBuffer = GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mVertices*POSITION*BYTESFLOAT, GLES30.GL_MAP_READ_BIT);
|
| 87 |
85 |
FloatBuffer fb = ((ByteBuffer) mappedBuffer).order(ByteOrder.nativeOrder()).asFloatBuffer();
|
| 88 |
86 |
String msg = "";
|
| 89 |
87 |
|
| 90 |
|
for(int i=0; i<numVertices*POSITION; i++) msg += (" "+fb.get(i));
|
|
88 |
for(int i=0; i<mVertices*POSITION; i++) msg += (" "+fb.get(i));
|
| 91 |
89 |
|
| 92 |
90 |
android.util.Log.d( "Feedback", msg);
|
| 93 |
91 |
|
| ... | ... | |
| 132 |
130 |
android.util.Log.e("Feedback", "exception creating feedback program: "+ex.getMessage());
|
| 133 |
131 |
}
|
| 134 |
132 |
|
| 135 |
|
float[] floatData = { 1.0f,4.0f,9.0f, 16.0f,25.0f,36.0f, 49.0f,64.0f,81.0f, 100.0f,121.0f,144.0f};
|
|
133 |
float[] floatData = { 1.0f, 4.0f, 9.0f,
|
|
134 |
16.0f, 25.0f, 36.0f,
|
|
135 |
49.0f, 64.0f, 81.0f,
|
|
136 |
100.0f,121.0f,144.0f,
|
|
137 |
1.0f, 4.0f, 9.0f,
|
|
138 |
16.0f, 25.0f, 36.0f
|
|
139 |
};
|
|
140 |
|
| 136 |
141 |
mVertices = floatData.length/POSITION;
|
| 137 |
142 |
FloatBuffer data = ByteBuffer.allocateDirect(mVertices*POSITION*BYTESFLOAT).order(ByteOrder.nativeOrder()).asFloatBuffer();
|
| 138 |
143 |
data.put(floatData).position(0);
|
| ... | ... | |
| 146 |
151 |
mTBO = new int[1];
|
| 147 |
152 |
GLES30.glGenBuffers(1, mTBO, 0);
|
| 148 |
153 |
GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mTBO[0]);
|
| 149 |
|
GLES30.glBufferData(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 3*(mVertices)*POSITION*BYTESFLOAT, null, GLES30.GL_STATIC_READ);
|
|
154 |
GLES30.glBufferData(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, mVertices*POSITION*BYTESFLOAT, null, GLES30.GL_STATIC_READ);
|
| 150 |
155 |
GLES30.glBindBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0);
|
| 151 |
156 |
}
|
| 152 |
157 |
}
|
Beginnings of support for DistortedEffects.drawPrivFeedback()