Project

General

Profile

« Previous | Next » 

Revision 02de77c9

Added by Leszek Koltunski over 7 years ago

Progress with multi-program rendering.

View differences:

src/main/java/org/distorted/library/DistortedEffects.java
133 133

  
134 134
    float halfZ = halfInputW*mesh.zFactor;
135 135

  
136
    GLES20.glUseProgram(Distorted.mainProgramH);
137
    GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
138

  
139 136
    if( mP.mNumEffects==0 )
140 137
      {
138
      Distorted.mMainProgram.useProgram();
139
      GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
140

  
141 141
      mM.send(df,halfInputW,halfInputH,halfZ);
142 142
      mV.send(halfInputW,halfInputH,halfZ);
143 143
      mF.send(halfInputW,halfInputH);
......
146 146
      }
147 147
    else
148 148
      {
149
      if( mV.mNumEffects>0 || mP.mNumEffects>0 )
149
      if( mV.mNumEffects>0 || mF.mNumEffects>0 )
150 150
        {
151
        Distorted.mMainProgram.useProgram();
152
        GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
153

  
151 154
        mBufferFBO.resizeFast(df.mWidth, df.mHeight);
152 155
        mBufferFBO.setAsOutput();
153 156

  
......
157 160

  
158 161
        mesh.draw();
159 162

  
160
        GLES20.glUseProgram(Distorted.postProgramH);
161
        GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
163
        Distorted.mPostProgram.useProgram();
162 164
        mBufferFBO.setAsInput();
163 165
        df.setAsOutput();
164 166
        mP.send(df);
165 167

  
166
        GLES20.glVertexAttribPointer(Distorted.mPostProgramAttributes[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mQuadPositions);
167
        GLES20.glVertexAttribPointer(Distorted.mPostProgramAttributes[1], TEX_DATA_SIZE     , GLES20.GL_FLOAT, false, 0, mQuadTexture);
168
        GLES20.glVertexAttribPointer(Distorted.mPostProgram.mAttribute[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mQuadPositions);
169
        GLES20.glVertexAttribPointer(Distorted.mPostProgram.mAttribute[1], TEX_DATA_SIZE     , GLES20.GL_FLOAT, false, 0, mQuadTexture);
168 170
        GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
169 171
        }
170 172
      else
171 173
        {
172
        GLES20.glUseProgram(Distorted.postProgramH);
174
        Distorted.mPostProgram.useProgram();
173 175
        GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
174
        mP.send(df);
175 176

  
176
        GLES20.glVertexAttribPointer(Distorted.mPostProgramAttributes[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mQuadPositions);
177
        GLES20.glVertexAttribPointer(Distorted.mPostProgramAttributes[1], TEX_DATA_SIZE     , GLES20.GL_FLOAT, false, 0, mQuadTexture);
177
        mM.constructMatrices(df,halfInputW,halfInputH);
178
        mP.send(2*halfInputW,2*halfInputH, mM.getMVP() );
179

  
180
        GLES20.glVertexAttribPointer(Distorted.mPostProgram.mAttribute[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mQuadPositions);
181
        GLES20.glVertexAttribPointer(Distorted.mPostProgram.mAttribute[1], TEX_DATA_SIZE     , GLES20.GL_FLOAT, false, 0, mQuadTexture);
178 182
        GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
179 183
        }
180 184
      }

Also available in: Unified diff