summaryrefslogtreecommitdiffstats
path: root/remoting/android/java/src/org/chromium/chromoting/TextureHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/android/java/src/org/chromium/chromoting/TextureHelper.java')
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/TextureHelper.java57
1 files changed, 47 insertions, 10 deletions
diff --git a/remoting/android/java/src/org/chromium/chromoting/TextureHelper.java b/remoting/android/java/src/org/chromium/chromoting/TextureHelper.java
index f5708c8..fb710eb 100644
--- a/remoting/android/java/src/org/chromium/chromoting/TextureHelper.java
+++ b/remoting/android/java/src/org/chromium/chromoting/TextureHelper.java
@@ -4,9 +4,25 @@
package org.chromium.chromoting;
+import static android.opengl.GLES20.GL_LINEAR;
+import static android.opengl.GLES20.GL_NEAREST;
+import static android.opengl.GLES20.GL_TEXTURE_2D;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP_NEGATIVE_X;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP_POSITIVE_X;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP_POSITIVE_Y;
+import static android.opengl.GLES20.GL_TEXTURE_CUBE_MAP_POSITIVE_Z;
+import static android.opengl.GLES20.GL_TEXTURE_MAG_FILTER;
+import static android.opengl.GLES20.GL_TEXTURE_MIN_FILTER;
+import static android.opengl.GLES20.glBindTexture;
+import static android.opengl.GLES20.glDeleteTextures;
+import static android.opengl.GLES20.glGenTextures;
+import static android.opengl.GLES20.glTexParameteri;
+import static android.opengl.GLUtils.texImage2D;
+
import android.graphics.Bitmap;
-import android.opengl.GLES20;
-import android.opengl.GLUtils;
/**
* Helper class for working with OpenGL textures.
@@ -18,7 +34,7 @@ public class TextureHelper {
*/
public static int createTextureHandle() {
int[] textureDataHandle = new int[1];
- GLES20.glGenTextures(1, textureDataHandle, 0);
+ glGenTextures(1, textureDataHandle, 0);
if (textureDataHandle[0] != 0) {
return textureDataHandle[0];
} else {
@@ -32,17 +48,38 @@ public class TextureHelper {
*/
public static void linkTexture(int textureDataHandle, Bitmap bitmap) {
// Delete previously attached texture.
- GLES20.glDeleteTextures(1, new int[]{textureDataHandle}, 0);
+ glDeleteTextures(1, new int[]{textureDataHandle}, 0);
// Bind to the texture in OpenGL.
- GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureDataHandle);
+ glBindTexture(GL_TEXTURE_2D, textureDataHandle);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,
- GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
- GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,
- GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D,
+ GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D,
+ GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// Load the bitmap into the bound texture.
- GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
+ texImage2D(GL_TEXTURE_2D, 0, bitmap, 0);
+ }
+
+ /**
+ * Link the cubemap images with a given texture handle.
+ */
+ public static void linkCubeMap(int textureDataHandle, Bitmap[] cubeBitmaps) {
+ glBindTexture(GL_TEXTURE_CUBE_MAP, textureDataHandle);
+
+ // Linear filtering for minification and magnification.
+ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ // Link left, right, bottom, top, back and front image in order.
+ texImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, cubeBitmaps[0], 0);
+ texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, cubeBitmaps[1], 0);
+
+ texImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, cubeBitmaps[2], 0);
+ texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, cubeBitmaps[3], 0);
+
+ texImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, cubeBitmaps[4], 0);
+ texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, cubeBitmaps[5], 0);
}
} \ No newline at end of file