Android Open Source - FxCameraApp Gl Image Texture From Project Back to project page FxCameraApp .
License The source code is released under:
MIT License
If you think the Android project FxCameraApp listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.af.experiments.FxCameraApp.ogles;
/ * w w w . j a v a 2 s . c o m * /
import android.graphics.Bitmap;
import com.af.experiments.FxCameraApp.Utils.OpenGlUtils;
import com.af.experiments.FxCameraApp.renderer.GLES20FramebufferObject;
import com.af.experiments.FxCameraApp.shaders.GlShader;
import static android.opengl.GLES20.GL_COLOR_BUFFER_BIT;
import static android.opengl.GLES20.GL_FRAMEBUFFER;
import static android.opengl.GLES20.GL_FRAMEBUFFER_BINDING;
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_BINDING_2D;
import static android.opengl.GLES20.GL_VIEWPORT;
import static android.opengl.GLES20.glBindFramebuffer;
import static android.opengl.GLES20.glBindTexture;
import static android.opengl.GLES20.glClear;
import static android.opengl.GLES20.glDeleteTextures;
import static android.opengl.GLES20.glGenTextures;
import static android.opengl.GLES20.glGetIntegerv;
import static android.opengl.GLES20.glViewport;
public abstract class GlImageTexture implements Texture {
private static final class GLES20FlipVerticalShader extends GlShader {
private static final float [] VERTICES_DATA = new float [] {
// X, Y, Z, U, V
-1.0f, 1.0f, 0.0f, 0.0f, 0.0f,
1.0f, 1.0f, 0.0f, 1.0f, 0.0f,
-1.0f, -1.0f, 0.0f, 0.0f, 1.0f,
1.0f, -1.0f, 0.0f, 1.0f, 1.0f
};
@Override
public void setup() {
super.setup();
OpenGlUtils.updateBufferData(getVertexBufferName(), VERTICES_DATA);
}
};
private final GLES20FramebufferObject mFramebufferObject = new GLES20FramebufferObject();
protected final void attachToTexture(final Bitmap bitmap) {
if (bitmap == null) {
throw new IllegalArgumentException("Bitmap must not be null" );
}
if (bitmap.isRecycled()) {
throw new IllegalStateException("Bitmap is recycled" );
}
final int [] saveFramebuffer = new int [1];
glGetIntegerv(GL_FRAMEBUFFER_BINDING, saveFramebuffer, 0);
final int [] saveViewport = new int [4];
glGetIntegerv(GL_VIEWPORT, saveViewport, 0);
final int [] saveTexName = new int [1];
glGetIntegerv(GL_TEXTURE_BINDING_2D, saveTexName, 0);
final GLES20FlipVerticalShader shader = new GLES20FlipVerticalShader();
final int [] textures = new int [1];
try {
glGenTextures(textures.length, textures, 0);
glBindTexture(GL_TEXTURE_2D, textures[0]);
OpenGlUtils.setupSampler(GL_TEXTURE_2D, GL_LINEAR, GL_NEAREST);
OpenGlUtils.texImage2D(GL_TEXTURE_2D, 0, bitmap, 0);
mFramebufferObject.setup(bitmap.getWidth(), bitmap.getHeight());
shader.setup();
shader.setFrameSize(mFramebufferObject.getWidth(), mFramebufferObject.getHeight());
mFramebufferObject.enable();
glViewport(0, 0, mFramebufferObject.getWidth(), mFramebufferObject.getHeight());
glClear(GL_COLOR_BUFFER_BIT);
shader.draw(textures[0], null);
} catch (final RuntimeException e) {
mFramebufferObject.release();
throw e;
} finally {
glDeleteTextures(textures.length, textures, 0);
shader.release();
glBindFramebuffer(GL_FRAMEBUFFER, saveFramebuffer[0]);
glViewport(saveViewport[0], saveViewport[1], saveViewport[2], saveViewport[3]);
glBindTexture(GL_TEXTURE_2D, saveTexName[0]);
}
}
@Override
public void release() {
mFramebufferObject.release();
}
@Override
public int getTexName() {
return mFramebufferObject.getTexName();
}
@Override
public int getWidth() {
return mFramebufferObject.getWidth();
}
@Override
public int getHeight() {
return mFramebufferObject.getHeight();
}
}
Java Source Code List com.af.experiments.FxCameraApp.FilterAdapter.java com.af.experiments.FxCameraApp.MyActivity.java com.af.experiments.FxCameraApp.Utils.BitmapFactoryUtils.java com.af.experiments.FxCameraApp.Utils.ExifUtils.java com.af.experiments.FxCameraApp.Utils.Fps.java com.af.experiments.FxCameraApp.Utils.LogWriter.java com.af.experiments.FxCameraApp.Utils.OpenGlUtils.java com.af.experiments.FxCameraApp.View.CameraView.java com.af.experiments.FxCameraApp.View.DefaultPreview.java com.af.experiments.FxCameraApp.View.GlPreview.java com.af.experiments.FxCameraApp.View.PreviewTexture.java com.af.experiments.FxCameraApp.camera.CameraHelperBase.java com.af.experiments.FxCameraApp.camera.CameraHelperCupcake.java com.af.experiments.FxCameraApp.camera.CameraHelperDonut.java com.af.experiments.FxCameraApp.camera.CameraHelperEclair.java com.af.experiments.FxCameraApp.camera.CameraHelperFactory.java com.af.experiments.FxCameraApp.camera.CameraHelperFroyo.java com.af.experiments.FxCameraApp.camera.CameraHelperGingerbread.java com.af.experiments.FxCameraApp.camera.CameraHelperHonycomb.java com.af.experiments.FxCameraApp.camera.CameraHelperICS.java com.af.experiments.FxCameraApp.camera.CameraHelper.java com.af.experiments.FxCameraApp.display.DisplayHelperBase.java com.af.experiments.FxCameraApp.display.DisplayHelperFactory.java com.af.experiments.FxCameraApp.display.DisplayHelperFroyo.java com.af.experiments.FxCameraApp.display.DisplayHelperHoneycombMR2.java com.af.experiments.FxCameraApp.display.DisplayHelperHoneycomb.java com.af.experiments.FxCameraApp.display.DisplayHelper.java com.af.experiments.FxCameraApp.ogles.DefaultConfigChooser.java com.af.experiments.FxCameraApp.ogles.DefaultContextFactory.java com.af.experiments.FxCameraApp.ogles.DefaultWindowSurfaceFactory.java com.af.experiments.FxCameraApp.ogles.EGLLogWrapper.java com.af.experiments.FxCameraApp.ogles.GLES20ConfigChooser.java com.af.experiments.FxCameraApp.ogles.GLES20ContextFactory.java com.af.experiments.FxCameraApp.ogles.GlImageBitmapTexture.java com.af.experiments.FxCameraApp.ogles.GlImageResourceTexture.java com.af.experiments.FxCameraApp.ogles.GlImageTexture.java com.af.experiments.FxCameraApp.ogles.GlPreviewTextureFactory.java com.af.experiments.FxCameraApp.ogles.GlSurfaceTexture.java com.af.experiments.FxCameraApp.ogles.GlTextureView.java com.af.experiments.FxCameraApp.ogles.PixelBuffer.java com.af.experiments.FxCameraApp.ogles.PreviewSurfaceHelperBase.java com.af.experiments.FxCameraApp.ogles.PreviewSurfaceHelperFactory.java com.af.experiments.FxCameraApp.ogles.PreviewSurfaceHelper.java com.af.experiments.FxCameraApp.ogles.Texture.java com.af.experiments.FxCameraApp.renderer.GLES20FramebufferObject.java com.af.experiments.FxCameraApp.renderer.GlFrameBufferObjectRenderer.java com.af.experiments.FxCameraApp.renderer.MainRenderer.java com.af.experiments.FxCameraApp.shaders.GlBilateralShader.java com.af.experiments.FxCameraApp.shaders.GlBoxBlurShader.java com.af.experiments.FxCameraApp.shaders.GlBulgeDistortionShader.java com.af.experiments.FxCameraApp.shaders.GlCGAColorspaceShader.java com.af.experiments.FxCameraApp.shaders.GlColorInvertShader.java com.af.experiments.FxCameraApp.shaders.GlColorMatrixShader.java com.af.experiments.FxCameraApp.shaders.GlColorPackingShader.java com.af.experiments.FxCameraApp.shaders.GlConvolutionShader.java com.af.experiments.FxCameraApp.shaders.GlEmbossShader.java com.af.experiments.FxCameraApp.shaders.GlFalseColorShader.java com.af.experiments.FxCameraApp.shaders.GlFastBlurShader.java com.af.experiments.FxCameraApp.shaders.GlGaussianBlurShader.java com.af.experiments.FxCameraApp.shaders.GlGlassSphereShader.java com.af.experiments.FxCameraApp.shaders.GlGrayScaleShader.java com.af.experiments.FxCameraApp.shaders.GlHarrisCornerDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlHazeShader.java com.af.experiments.FxCameraApp.shaders.GlMonochromeShader.java com.af.experiments.FxCameraApp.shaders.GlNobleCornerDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlPerlinNoiseShader.java com.af.experiments.FxCameraApp.shaders.GlPinchDistortionShader.java com.af.experiments.FxCameraApp.shaders.GlPixellateShader.java com.af.experiments.FxCameraApp.shaders.GlPolarPixellateShader.java com.af.experiments.FxCameraApp.shaders.GlPolkaDotShader.java com.af.experiments.FxCameraApp.shaders.GlPosterizeShader.java com.af.experiments.FxCameraApp.shaders.GlPreviewShader.java com.af.experiments.FxCameraApp.shaders.GlSepiaShader.java com.af.experiments.FxCameraApp.shaders.GlShaderGroup.java com.af.experiments.FxCameraApp.shaders.GlShader.java com.af.experiments.FxCameraApp.shaders.GlSharpenShader.java com.af.experiments.FxCameraApp.shaders.GlShiTomasiFeatureDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlSobelEdgeDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlSphereRefractionShader.java com.af.experiments.FxCameraApp.shaders.GlStretchDistortionShader.java com.af.experiments.FxCameraApp.shaders.GlThreex3ConvolutionShader.java com.af.experiments.FxCameraApp.shaders.GlThreex3TextureSamplingShader.java com.af.experiments.FxCameraApp.shaders.GlToneShader.java com.af.experiments.FxCameraApp.shaders.GlTwoInputShader.java com.af.experiments.FxCameraApp.shaders.GlVignetteShader.java com.af.experiments.FxCameraApp.shaders.GlWeakPixelInclusionShader.java com.af.experiments.FxCameraApp.shaders.GlWhiteBalanceShader.java com.af.experiments.FxCameraApp.shaders.GlXRayShader.java com.af.experiments.FxCameraApp.shaders.GlXYDerivativeShader.java com.af.experiments.FxCameraApp.shaders.fx.GlLutShader.java