pack colors to array before passing to gl

This commit is contained in:
Hannes Janetzek 2012-12-07 00:21:42 +01:00
parent e4276ae9c4
commit c9137aa790

View File

@ -14,7 +14,6 @@
*/ */
package org.oscim.utils; package org.oscim.utils;
import static android.opengl.GLES20.glUniform4f;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.opengl.GLES20; import android.opengl.GLES20;
import android.opengl.GLUtils; import android.opengl.GLUtils;
@ -144,19 +143,29 @@ public class GlUtils {
return oom; return oom;
} }
public static void setBlendColors(int handle, float[] c1, float[] c2, float alpha) { // this is save as it can only be called from glThread
private static float[] tmpColor = new float[4];
glUniform4f(handle, public static void setBlendColors(int handle, float[] c1, float[] c2, float alpha) {
c1[0] * (1 - alpha) + c2[0] * alpha, tmpColor[0] = c1[0] * (1 - alpha) + c2[0] * alpha;
c1[1] * (1 - alpha) + c2[1] * alpha, tmpColor[1] = c1[1] * (1 - alpha) + c2[1] * alpha;
c1[2] * (1 - alpha) + c2[2] * alpha, 1); tmpColor[2] = c1[2] * (1 - alpha) + c2[2] * alpha;
tmpColor[3] = c1[3] * (1 - alpha) + c2[3] * alpha;
GLES20.glUniform4fv(handle, 1, tmpColor, 0);
} }
public static void setColor(int handle, float[] c, float alpha) { public static void setColor(int handle, float[] c, float alpha) {
if (alpha >= 1) if (alpha >= 1)
GLES20.glUniform4fv(handle, 1, c, 0); GLES20.glUniform4fv(handle, 1, c, 0);
else else {
glUniform4f(handle, c[0] * alpha, c[1] * alpha, c[2] * alpha, c[3] * alpha); tmpColor[0] = c[0] * alpha;
tmpColor[1] = c[1] * alpha;
tmpColor[2] = c[2] * alpha;
tmpColor[3] = c[3] * alpha;
GLES20.glUniform4fv(handle, 1, tmpColor, 0);
}
} }
public static float[] colorToFloat(int color) { public static float[] colorToFloat(int color) {