aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/wallpapers/photophase/transitions
diff options
context:
space:
mode:
authorJorge Ruesga <jorge@ruesga.com>2013-08-06 22:47:59 +0200
committerJorge Ruesga <jorge@ruesga.com>2013-08-06 22:47:59 +0200
commit6eca30d2324c8a9c84e8fc8753dcd7919af8a426 (patch)
treed64a4804a8d11fcd58c44ce46fef7866af9e3cf5 /src/org/cyanogenmod/wallpapers/photophase/transitions
parentab5b656128fb0a9c7770380d09734992231ed385 (diff)
downloadandroid_packages_wallpapers_PhotoPhase-6eca30d2324c8a9c84e8fc8753dcd7919af8a426.tar.gz
android_packages_wallpapers_PhotoPhase-6eca30d2324c8a9c84e8fc8753dcd7919af8a426.tar.bz2
android_packages_wallpapers_PhotoPhase-6eca30d2324c8a9c84e8fc8753dcd7919af8a426.zip
Fix translate transition (#11)
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
Diffstat (limited to 'src/org/cyanogenmod/wallpapers/photophase/transitions')
-rw-r--r--src/org/cyanogenmod/wallpapers/photophase/transitions/NullTransition.java2
-rw-r--r--src/org/cyanogenmod/wallpapers/photophase/transitions/Transition.java1
-rw-r--r--src/org/cyanogenmod/wallpapers/photophase/transitions/TranslateTransition.java100
3 files changed, 50 insertions, 53 deletions
diff --git a/src/org/cyanogenmod/wallpapers/photophase/transitions/NullTransition.java b/src/org/cyanogenmod/wallpapers/photophase/transitions/NullTransition.java
index b1d8e55..8686dd9 100644
--- a/src/org/cyanogenmod/wallpapers/photophase/transitions/NullTransition.java
+++ b/src/org/cyanogenmod/wallpapers/photophase/transitions/NullTransition.java
@@ -155,7 +155,7 @@ public class NullTransition extends Transition {
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle);
GLESUtil.glesCheckError("glBindTexture");
GLES20.glUniform1i(mTextureHandlers[0], 0);
- GLESUtil.glesCheckError("glBindTexture");
+ GLESUtil.glesCheckError("glUniform1i");
// Draw
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
diff --git a/src/org/cyanogenmod/wallpapers/photophase/transitions/Transition.java b/src/org/cyanogenmod/wallpapers/photophase/transitions/Transition.java
index cd24b54..82a8eea 100644
--- a/src/org/cyanogenmod/wallpapers/photophase/transitions/Transition.java
+++ b/src/org/cyanogenmod/wallpapers/photophase/transitions/Transition.java
@@ -88,6 +88,7 @@ public abstract class Transition {
mContext,
mTextureManager,
mTarget.getFrameVertex(),
+ mTarget.getPhotoVertex(),
mTarget.getBackgroundColor());
}
}
diff --git a/src/org/cyanogenmod/wallpapers/photophase/transitions/TranslateTransition.java b/src/org/cyanogenmod/wallpapers/photophase/transitions/TranslateTransition.java
index 007ae01..14006b7 100644
--- a/src/org/cyanogenmod/wallpapers/photophase/transitions/TranslateTransition.java
+++ b/src/org/cyanogenmod/wallpapers/photophase/transitions/TranslateTransition.java
@@ -186,9 +186,9 @@ public class TranslateTransition extends Transition {
final float delta = Math.min(SystemClock.uptimeMillis() - mTime, TRANSITION_TIME) / TRANSITION_TIME;
// Apply the transition
- applyTransitionToTransitionTarget(delta, matrix);
+ applyTransitionToDst(delta, matrix);
if (delta < 1) {
- applyTransitionToTarget(delta, matrix);
+ applyTransitionToSrc(delta, matrix);
}
// Transition ending
@@ -198,50 +198,48 @@ public class TranslateTransition extends Transition {
}
/**
- * Apply the transition to the passed frame
+ * Apply the transition to the source frame
*
* @param delta The delta time
* @param matrix The model-view-projection matrix
*/
- private void applyTransitionToTarget(float delta, float[] matrix) {
+ private void applyTransitionToSrc(float delta, float[] matrix) {
+ // Bind default FBO
+ GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
+ GLESUtil.glesCheckError("glBindFramebuffer");
+
// Set the program
useProgram(0);
- // Bind the texture
+ // Disable blending
+ GLES20.glDisable(GLES20.GL_BLEND);
+ GLESUtil.glesCheckError("glDisable");
+
+ // Set the input texture
int textureHandle = mTarget.getTextureHandle();
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLESUtil.glesCheckError("glActiveTexture");
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle);
GLESUtil.glesCheckError("glBindTexture");
-
- // Position
- FloatBuffer vertexBuffer = mTarget.getPositionBuffer();
- vertexBuffer.position(0);
- GLES20.glVertexAttribPointer(
- mPositionHandlers[0],
- PhotoFrame.COORDS_PER_VERTER,
- GLES20.GL_FLOAT,
- false,
- PhotoFrame.COORDS_PER_VERTER * 4,
- vertexBuffer);
- GLESUtil.glesCheckError("glVertexAttribPointer");
- GLES20.glEnableVertexAttribArray(mPositionHandlers[0]);
- GLESUtil.glesCheckError("glEnableVertexAttribArray");
+ GLES20.glUniform1i(mTextureHandlers[0], 0);
+ GLESUtil.glesCheckError("glBindTexture");
// Texture
FloatBuffer textureBuffer = mTarget.getTextureBuffer();
textureBuffer.position(0);
- GLES20.glVertexAttribPointer(
- mTextureCoordHandlers[0],
- 2,
- GLES20.GL_FLOAT,
- false,
- 2 * 4,
- textureBuffer);
+ GLES20.glVertexAttribPointer(mTextureCoordHandlers[0], 2, GLES20.GL_FLOAT, false, 0, textureBuffer);
GLESUtil.glesCheckError("glVertexAttribPointer");
GLES20.glEnableVertexAttribArray(mTextureCoordHandlers[0]);
GLESUtil.glesCheckError("glEnableVertexAttribArray");
+ // Position
+ FloatBuffer positionBuffer = mTarget.getPositionBuffer();
+ positionBuffer.position(0);
+ GLES20.glVertexAttribPointer(mPositionHandlers[0], 2, GLES20.GL_FLOAT, false, 0, positionBuffer);
+ GLESUtil.glesCheckError("glVertexAttribPointer");
+ GLES20.glEnableVertexAttribArray(mPositionHandlers[0]);
+ GLESUtil.glesCheckError("glEnableVertexAttribArray");
+
// Calculate the delta distance
float distance =
(mMode.compareTo(TRANSLATE_MODES.LEFT_TO_RIGHT) == 0 || mMode.compareTo(TRANSLATE_MODES.RIGHT_TO_LEFT) == 0)
@@ -263,7 +261,7 @@ public class TranslateTransition extends Transition {
GLES20.glUniformMatrix4fv(mMVPMatrixHandlers[0], 1, false, translationMatrix, 0);
GLESUtil.glesCheckError("glUniformMatrix4fv");
- // Draw the photo frame
+ // Draw
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
GLESUtil.glesCheckError("glDrawElements");
@@ -275,57 +273,55 @@ public class TranslateTransition extends Transition {
}
/**
- * Apply the transition to the passed frame
+ * Apply the transition to the destination frame
*
* @param delta The delta time
* @param matrix The model-view-projection matrix
*/
- private void applyTransitionToTransitionTarget(float delta, float[] matrix) {
+ private void applyTransitionToDst(float delta, float[] matrix) {
+ // Bind default FBO
+ GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
+ GLESUtil.glesCheckError("glBindFramebuffer");
+
// Set the program
useProgram(1);
- // Bind the texture
+ // Disable blending
+ GLES20.glDisable(GLES20.GL_BLEND);
+ GLESUtil.glesCheckError("glDisable");
+
+ // Set the input texture
int textureHandle = mTransitionTarget.getTextureHandle();
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLESUtil.glesCheckError("glActiveTexture");
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureHandle);
GLESUtil.glesCheckError("glBindTexture");
-
- // Position
- FloatBuffer vertexBuffer = mTransitionTarget.getPositionBuffer();
- vertexBuffer.position(0);
- GLES20.glVertexAttribPointer(
- mPositionHandlers[1],
- PhotoFrame.COORDS_PER_VERTER,
- GLES20.GL_FLOAT,
- false,
- PhotoFrame.COORDS_PER_VERTER * 4,
- vertexBuffer);
- GLESUtil.glesCheckError("glVertexAttribPointer");
- GLES20.glEnableVertexAttribArray(mPositionHandlers[1]);
- GLESUtil.glesCheckError("glEnableVertexAttribArray");
+ GLES20.glUniform1i(mTextureHandlers[1], 0);
+ GLESUtil.glesCheckError("glUniform1i");
// Texture
FloatBuffer textureBuffer = mTransitionTarget.getTextureBuffer();
textureBuffer.position(0);
- GLES20.glVertexAttribPointer(
- mTextureCoordHandlers[1],
- 2,
- GLES20.GL_FLOAT,
- false,
- 2 * 4,
- textureBuffer);
+ GLES20.glVertexAttribPointer(mTextureCoordHandlers[1], 2, GLES20.GL_FLOAT, false, 0, textureBuffer);
GLESUtil.glesCheckError("glVertexAttribPointer");
GLES20.glEnableVertexAttribArray(mTextureCoordHandlers[1]);
GLESUtil.glesCheckError("glEnableVertexAttribArray");
+ // Position
+ FloatBuffer positionBuffer = mTransitionTarget.getPositionBuffer();
+ positionBuffer.position(0);
+ GLES20.glVertexAttribPointer(mPositionHandlers[1], 2, GLES20.GL_FLOAT, false, 0, positionBuffer);
+ GLESUtil.glesCheckError("glVertexAttribPointer");
+ GLES20.glEnableVertexAttribArray(mPositionHandlers[1]);
+ GLESUtil.glesCheckError("glEnableVertexAttribArray");
+
// Apply the projection and view transformation
float[] translationMatrix = new float[16];
Matrix.translateM(translationMatrix, 0, matrix, 0, 0.0f, 0.0f, 0.0f);
GLES20.glUniformMatrix4fv(mMVPMatrixHandlers[1], 1, false, translationMatrix, 0);
GLESUtil.glesCheckError("glUniformMatrix4fv");
- // Draw the photo frame
+ // Draw
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
GLESUtil.glesCheckError("glDrawElements");