Project

General

Profile

« Previous | Next » 

Revision e78a30fd

Added by Leszek Koltunski about 7 years ago

Progress with Transform Feedback.

View differences:

src/main/java/org/distorted/library/DistortedEffects.java
38 38
import org.distorted.library.type.Static3D;
39 39

  
40 40
import java.io.InputStream;
41
import java.nio.Buffer;
41 42
import java.nio.ByteBuffer;
42 43
import java.nio.ByteOrder;
43 44
import java.nio.FloatBuffer;
......
140 141
    //android.util.Log.e("Effects", "vertHeader= "+mainVertHeader);
141 142
    //android.util.Log.e("Effects", "fragHeader= "+mainFragHeader);
142 143

  
143
    mMainProgram = new DistortedProgram(mainVertStream,mainFragStream, mainVertHeader, mainFragHeader, Distorted.GLSL);
144
    String[] feedback = { "v_Position" };
145

  
146
    mMainProgram = new DistortedProgram(mainVertStream,mainFragStream, mainVertHeader, mainFragHeader, Distorted.GLSL, feedback);
144 147

  
145 148
    int mainProgramH = mMainProgram.getProgramHandle();
146 149
    EffectQueueFragment.getUniforms(mainProgramH);
......
306 309
    GLES30.glVertexAttribPointer(mMainProgram.mAttribute[1], MeshObject.NORMAL_DATA_SIZE  , GLES30.GL_FLOAT, false, 0, 0);
307 310
    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mesh.mTexVBO[0]);
308 311
    GLES30.glVertexAttribPointer(mMainProgram.mAttribute[2], MeshObject.TEX_DATA_SIZE     , GLES30.GL_FLOAT, false, 0, 0);
312

  
313
    //GLES30.glBindBufferBase(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, mesh.mPosTBO[0]);
314

  
315
//    GLES30.glBeginTransformFeedback(GLES30.GL_TRIANGLES);
309 316
    GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
317
  //  GLES30.glEndTransformFeedback();
318
  //  GLES30.glFlush();
319

  
310 320
    GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0 );
321
/*
322
int len = mesh.dataLength*MeshObject.BYTES_PER_FLOAT*MeshObject.POSITION_DATA_SIZE;
323

  
324
Buffer mappedBuffer =  GLES30.glMapBufferRange(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER, 0, len, GLES30.GL_MAP_READ_BIT);
325
FloatBuffer fb = ((ByteBuffer) mappedBuffer).order(ByteOrder.nativeOrder()).asFloatBuffer();
326
FloatBuffer bb = mesh.mMeshPositions;
327

  
328
String msgB = "BEFORE: ", msgA = "AFTER : ";
329
for(int d=0; d<mesh.dataLength; d++)
330
  {
331
  msgB+="("+(2*halfW*bb.get(3*d+0))+","+(2*halfH*bb.get(3*d+1))+","+(2*halfZ*bb.get(3*d+2))+")";
332
  msgA+="("+fb.get(3*d+0)+","+fb.get(3*d+1)+","+fb.get(3*d+2)+")";
333
  }
334
android.util.Log.d( "Feedback", msgB);
335
android.util.Log.d( "Feedback", msgA);
311 336

  
312 337
    /// DEBUG ONLY //////
313
    // displayBoundingRect(halfInputW, halfInputH, halfZ, df, mM.getMVP(), mesh.getBoundingVertices() );
338
    // displayBoundingRect(halfW, halfH, halfZ, surface, mM.getMVP(), fb, currTime );
314 339
    /// END DEBUG ///////
340

  
341
GLES30.glUnmapBuffer(GLES30.GL_TRANSFORM_FEEDBACK_BUFFER);
342
*/
315 343
    }
316 344

  
317 345
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff