Revision 194ab46f
Added by Leszek Koltunski over 7 years ago
src/main/java/org/distorted/library/DistortedEffects.java | ||
---|---|---|
20 | 20 |
package org.distorted.library; |
21 | 21 |
|
22 | 22 |
import android.content.res.Resources; |
23 |
import android.opengl.GLES20;
|
|
23 |
import android.opengl.GLES30;
|
|
24 | 24 |
import android.opengl.Matrix; |
25 | 25 |
|
26 | 26 |
import org.distorted.library.message.EffectListener; |
... | ... | |
125 | 125 |
mDebugProgram = new DistortedProgram(debugVertexStream,debugFragmentStream, "#version 100\n", "#version 100\n"); |
126 | 126 |
|
127 | 127 |
int debugProgramH = mDebugProgram.getProgramHandle(); |
128 |
mObjDH = GLES20.glGetUniformLocation( debugProgramH, "u_objD");
|
|
129 |
mMVPMatrixH = GLES20.glGetUniformLocation( debugProgramH, "u_MVPMatrix");
|
|
128 |
mObjDH = GLES30.glGetUniformLocation( debugProgramH, "u_objD");
|
|
129 |
mMVPMatrixH = GLES30.glGetUniformLocation( debugProgramH, "u_MVPMatrix");
|
|
130 | 130 |
// END DEBUG ////////////////////////////////////// |
131 | 131 |
} |
132 | 132 |
|
... | ... | |
225 | 225 |
Matrix.translateM ( mTmpMatrix, 0, halfX,-halfY, 0); |
226 | 226 |
Matrix.multiplyMM ( mMVPMatrix, 0, df.mProjectionMatrix, 0, mTmpMatrix, 0); |
227 | 227 |
|
228 |
GLES20.glUniform2f( mObjDH , 2*halfX, 2*halfY);
|
|
229 |
GLES20.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix , 0);
|
|
228 |
GLES30.glUniform2f( mObjDH , 2*halfX, 2*halfY);
|
|
229 |
GLES30.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix , 0);
|
|
230 | 230 |
|
231 |
GLES20.glVertexAttribPointer(mDebugProgram.mAttribute[0], 2, GLES20.GL_FLOAT, false, 0, mQuadPositions);
|
|
232 |
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
|
|
231 |
GLES30.glVertexAttribPointer(mDebugProgram.mAttribute[0], 2, GLES30.GL_FLOAT, false, 0, mQuadPositions);
|
|
232 |
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
|
|
233 | 233 |
} |
234 | 234 |
|
235 | 235 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
242 | 242 |
mP.compute(currTime); |
243 | 243 |
|
244 | 244 |
float halfZ = halfInputW*mesh.zFactor; |
245 |
GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
|
|
245 |
GLES30.glViewport(0, 0, df.mWidth, df.mHeight);
|
|
246 | 246 |
|
247 | 247 |
if( mP.mNumEffects==0 ) |
248 | 248 |
{ |
... | ... | |
251 | 251 |
mM.send(df,halfInputW,halfInputH,halfZ); |
252 | 252 |
mV.send(halfInputW,halfInputH,halfZ); |
253 | 253 |
mF.send(halfInputW,halfInputH); |
254 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mesh.mMeshPositions);
|
|
255 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[1], NORMAL_DATA_SIZE , GLES20.GL_FLOAT, false, 0, mesh.mMeshNormals);
|
|
256 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[2], TEX_DATA_SIZE , GLES20.GL_FLOAT, false, 0, mesh.mMeshTexture);
|
|
257 |
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
|
|
254 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[0], POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mesh.mMeshPositions);
|
|
255 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[1], NORMAL_DATA_SIZE , GLES30.GL_FLOAT, false, 0, mesh.mMeshNormals);
|
|
256 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[2], TEX_DATA_SIZE , GLES30.GL_FLOAT, false, 0, mesh.mMeshTexture);
|
|
257 |
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
|
|
258 | 258 |
} |
259 | 259 |
else |
260 | 260 |
{ |
... | ... | |
268 | 268 |
mProgram.useProgram(); |
269 | 269 |
mBufferFBO.resizeFast(df.mWidth, df.mHeight); |
270 | 270 |
mBufferFBO.setAsOutput(); |
271 |
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
|
272 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
|
|
271 |
GLES30.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
|
|
272 |
GLES30.glClear( GLES30.GL_DEPTH_BUFFER_BIT | GLES30.GL_COLOR_BUFFER_BIT);
|
|
273 | 273 |
mM.send(mBufferFBO,halfInputW,halfInputH,halfZ); |
274 | 274 |
mV.send(halfInputW,halfInputH,halfZ); |
275 | 275 |
mF.send(halfInputW,halfInputH); |
276 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mesh.mMeshPositions);
|
|
277 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[1], NORMAL_DATA_SIZE , GLES20.GL_FLOAT, false, 0, mesh.mMeshNormals);
|
|
278 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[2], TEX_DATA_SIZE , GLES20.GL_FLOAT, false, 0, mesh.mMeshTexture);
|
|
279 |
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
|
|
276 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[0], POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mesh.mMeshPositions);
|
|
277 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[1], NORMAL_DATA_SIZE , GLES30.GL_FLOAT, false, 0, mesh.mMeshNormals);
|
|
278 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[2], TEX_DATA_SIZE , GLES30.GL_FLOAT, false, 0, mesh.mMeshTexture);
|
|
279 |
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
|
|
280 | 280 |
|
281 | 281 |
Matrix.setIdentityM(mTmpMatrix, 0); |
282 | 282 |
Matrix.translateM(mTmpMatrix, 0, 0, 0, -df.mDistance); |
... | ... | |
296 | 296 |
|
297 | 297 |
static void drawNoEffectsPriv(float halfInputW, float halfInputH, MeshObject mesh, DistortedFramebuffer df) |
298 | 298 |
{ |
299 |
GLES20.glViewport(0, 0, df.mWidth, df.mHeight);
|
|
299 |
GLES30.glViewport(0, 0, df.mWidth, df.mHeight);
|
|
300 | 300 |
|
301 | 301 |
Matrix.setIdentityM(mTmpMatrix, 0); |
302 | 302 |
Matrix.translateM(mTmpMatrix, 0, 0, 0, -df.mDistance); |
... | ... | |
307 | 307 |
EffectQueueFragment.sendZero(); |
308 | 308 |
EffectQueuePostprocess.sendZero(df.mWidth, df.mHeight, mMVPMatrix); |
309 | 309 |
|
310 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[0], POSITION_DATA_SIZE, GLES20.GL_FLOAT, false, 0, mesh.mMeshPositions);
|
|
311 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[1], NORMAL_DATA_SIZE , GLES20.GL_FLOAT, false, 0, mesh.mMeshNormals);
|
|
312 |
GLES20.glVertexAttribPointer(mProgram.mAttribute[2], TEX_DATA_SIZE , GLES20.GL_FLOAT, false, 0, mesh.mMeshTexture);
|
|
313 |
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
|
|
310 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[0], POSITION_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mesh.mMeshPositions);
|
|
311 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[1], NORMAL_DATA_SIZE , GLES30.GL_FLOAT, false, 0, mesh.mMeshNormals);
|
|
312 |
GLES30.glVertexAttribPointer(mProgram.mAttribute[2], TEX_DATA_SIZE , GLES30.GL_FLOAT, false, 0, mesh.mMeshTexture);
|
|
313 |
GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, mesh.dataLength);
|
|
314 | 314 |
} |
315 | 315 |
|
316 | 316 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Try using OpenGL ES 3.0 everywhere (but if device does not support it, try creating 2.0 context - this is important because of the emulator!)