Android Open Source - FxCameraApp Gl Frame Buffer Object Renderer 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.renderer;
/ * w w w . j a v a 2 s . c o m * /
import android.graphics.Bitmap;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.util.Log;
import com.af.experiments.FxCameraApp.Utils.Fps;
import com.af.experiments.FxCameraApp.Utils.OpenGlUtils;
import com.af.experiments.FxCameraApp.shaders.GlShader;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import java.util.LinkedList;
import java.util.Queue;
import static android.opengl.GLES20.*;
public abstract class GlFrameBufferObjectRenderer implements GLSurfaceView.Renderer {
private GLES20FramebufferObject mFramebufferObject;
private GlShader mShader;
private final Queue<Runnable> mRunOnDraw;
private Fps mFps;
protected GlFrameBufferObjectRenderer() {
mRunOnDraw = new LinkedList<Runnable>();
}
public void setFps(final Fps fps) {
if (mFps != null) {
mFps.stop();
mFps = null;
}
mFps = fps;
}
public Bitmap getBitmap() {
return mFramebufferObject.getBitmap();
}
public Bitmap getBitmap(final int orientation) {
return mFramebufferObject.getBitmap(orientation);
}
public Bitmap getBitmap(final int orientation, final boolean mirror) {
return mFramebufferObject.getBitmap(orientation, mirror);
}
@Override
public final void onSurfaceCreated(final GL10 gl, final EGLConfig config) {
mFramebufferObject = new GLES20FramebufferObject();
mShader = new GlShader();
mShader.setup();
onSurfaceCreated(config);
if (mFps != null) {
mFps.start();
}
}
@Override
public final void onSurfaceChanged(final GL10 gl, final int width, final int height) {
mFramebufferObject.setup(width, height);
mShader.setFrameSize(width, height);
onSurfaceChanged(width, height);
}
@Override
public final void onDrawFrame(final GL10 gl) {
synchronized (mRunOnDraw) {
while (!mRunOnDraw.isEmpty()) {
mRunOnDraw.poll().run();
}
}
mFramebufferObject.enable();
glViewport(0, 0, mFramebufferObject.getWidth(), mFramebufferObject.getHeight());
onDrawFrame(mFramebufferObject);
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(0, 0, mFramebufferObject.getWidth(), mFramebufferObject.getHeight());
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
mShader.draw(mFramebufferObject.getTexName(), null);
if (mFps != null) {
mFps.countup();
}
}
@Override
protected void finalize() throws Throwable {
try {
if (mFps != null) {
mFps.stop();
mFps = null;
}
} finally {
super.finalize();
}
}
public abstract void onSurfaceCreated(EGLConfig config);
public abstract void onSurfaceChanged(int width, int height);
public abstract void onDrawFrame(GLES20FramebufferObject fbo);
protected void runOnDraw(final Runnable runnable) {
synchronized (mRunOnDraw) {
mRunOnDraw.add(runnable);
}
}
private int mGLTextureId = OpenGlUtils.NO_TEXTURE;
public void setImageBitmap(final Bitmap bitmap, boolean b) {
runOnDraw(new Runnable() {
@Override
public void run() {
mGLTextureId = OpenGlUtils.loadTexture(bitmap, mGLTextureId, false);
if (bitmap != null) {
bitmap.recycle();
}
}
});
}
public void deleteImage() {
runOnDraw(new Runnable() {
@Override
public void run() {
try {
GLES20.glDeleteTextures(1, new int []{mGLTextureId}, 0);
mGLTextureId = -1;
}catch (Exception e){
Log.d("DEBUG" , "" , e);
}
}
});
}
}
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