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()