Project

General

Profile

« Previous | Next » 

Revision cab7c165

Added by Leszek Koltunski about 7 years ago

Beginning of support for actual Transform Feedback.

View differences:

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