diff options
Diffstat (limited to 'remoting/android/java/src/org/chromium/chromoting/TextureHelper.java')
-rw-r--r-- | remoting/android/java/src/org/chromium/chromoting/TextureHelper.java | 57 |
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 |