├── .gitignore
├── .idea
├── codeStyles
│ └── Project.xml
├── gradle.xml
├── misc.xml
├── runConfigurations.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── yinge
│ │ └── opengl
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── camera
│ │ │ ├── base_vertex.glsl
│ │ │ ├── gray_fragment.glsl
│ │ │ ├── oes_base_fragment.glsl
│ │ │ └── oes_base_vertex.glsl
│ │ ├── image
│ │ │ ├── half_color_fragment.glsl
│ │ │ └── half_color_vertex.glsl
│ │ ├── shape
│ │ │ ├── a.glsl
│ │ │ ├── fshader
│ │ │ │ ├── fColorFullTriangle.glsl
│ │ │ │ ├── fOval.glsl
│ │ │ │ ├── fRegularTriangle.glsl
│ │ │ │ ├── fSquare.glsl
│ │ │ │ └── fTriangle.glsl
│ │ │ └── vshader
│ │ │ │ ├── vColorFullTriangle.glsl
│ │ │ │ ├── vOval.glsl
│ │ │ │ ├── vRegularTriangle.glsl
│ │ │ │ ├── vSquare.glsl
│ │ │ │ └── vTriangle.glsl
│ │ ├── texture
│ │ │ └── fengj.png
│ │ └── transform
│ │ │ ├── fcube.glsl
│ │ │ └── vcube.glsl
│ ├── java
│ │ └── com
│ │ │ └── yinge
│ │ │ └── opengl
│ │ │ ├── MainActivity.java
│ │ │ ├── OpenGlApplication.java
│ │ │ ├── camera
│ │ │ ├── CameraActivity.java
│ │ │ ├── CameraDrawer.java
│ │ │ ├── CameraView.java
│ │ │ ├── ICamera.java
│ │ │ ├── KitkatCamera.java
│ │ │ └── filter
│ │ │ │ ├── AbsOesImageFilter.java
│ │ │ │ ├── GrayFilter.java
│ │ │ │ └── OesFilter.java
│ │ │ ├── camerademo
│ │ │ ├── CameraDemoActivity.java
│ │ │ ├── ImageUtils.java
│ │ │ ├── camera
│ │ │ │ ├── Camera2Proxy.java
│ │ │ │ └── CameraProxy.java
│ │ │ ├── glsurfaceview
│ │ │ │ ├── Camera2GLSurfaceView.java
│ │ │ │ ├── CameraDrawer.java
│ │ │ │ ├── CameraGLSurfaceView.java
│ │ │ │ ├── GLSurfaceCamera2Activity.java
│ │ │ │ ├── GLSurfaceCameraActivity.java
│ │ │ │ └── OpenGLUtils.java
│ │ │ ├── surfaceview
│ │ │ │ ├── Camera2SurfaceView.java
│ │ │ │ ├── CameraSurfaceView.java
│ │ │ │ ├── SurfaceCamera2Activity.java
│ │ │ │ └── SurfaceCameraActivity.java
│ │ │ └── textureview
│ │ │ │ ├── Camera2TextureView.java
│ │ │ │ ├── CameraTextureView.java
│ │ │ │ ├── TextureCamera2Activity.java
│ │ │ │ └── TextureCameraActivity.java
│ │ │ ├── egl
│ │ │ ├── EGLHelper.java
│ │ │ ├── EGLRender.java
│ │ │ └── EGLRenderActivity.java
│ │ │ ├── fbo
│ │ │ ├── FboActivity.java
│ │ │ └── FboRender.java
│ │ │ ├── image
│ │ │ ├── GLImageRender.java
│ │ │ ├── GLImageView.java
│ │ │ ├── GLImageViewActivity.java
│ │ │ └── filter
│ │ │ │ ├── AbsImageFilter.java
│ │ │ │ └── ContrastColorFilter.java
│ │ │ ├── render
│ │ │ ├── ChooseShapeActivity.java
│ │ │ ├── GLShapeRender.java
│ │ │ ├── GLShapeView.java
│ │ │ ├── GLShapeViewActivity.java
│ │ │ ├── Oval.java
│ │ │ ├── Shape.java
│ │ │ ├── Square.java
│ │ │ ├── Triangle.java
│ │ │ ├── TriangleWithColorFull.java
│ │ │ └── TriangleWithRegular.java
│ │ │ ├── transform
│ │ │ ├── Cube.java
│ │ │ ├── TransformActivity.java
│ │ │ ├── TransformMatrix.java
│ │ │ └── TransformRender.java
│ │ │ └── util
│ │ │ ├── OpenGlUtils.java
│ │ │ ├── PermissionUtils.java
│ │ │ └── ScaleTypeMatrix.java
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable-xhdpi
│ │ ├── filter_thumb_1977.jpg
│ │ ├── filter_thumb_amoro.jpg
│ │ ├── filter_thumb_antique.png
│ │ ├── filter_thumb_beauty.png
│ │ ├── filter_thumb_blackcat.png
│ │ ├── filter_thumb_brannan.jpg
│ │ ├── filter_thumb_brooklyn.jpg
│ │ ├── filter_thumb_calm.png
│ │ ├── filter_thumb_cool.png
│ │ ├── filter_thumb_crayon.jpg
│ │ ├── filter_thumb_earlybird.jpg
│ │ ├── filter_thumb_emerald.png
│ │ ├── filter_thumb_evergreen.png
│ │ ├── filter_thumb_fairytale.png
│ │ ├── filter_thumb_freud.jpg
│ │ ├── filter_thumb_healthy.png
│ │ ├── filter_thumb_hefe.jpg
│ │ ├── filter_thumb_hudson.jpg
│ │ ├── filter_thumb_inkwell.jpg
│ │ ├── filter_thumb_kevin.jpg
│ │ ├── filter_thumb_latte.png
│ │ ├── filter_thumb_lomo.jpg
│ │ ├── filter_thumb_nashville.jpg
│ │ ├── filter_thumb_nostalgia.png
│ │ ├── filter_thumb_original.png
│ │ ├── filter_thumb_piaxr.jpg
│ │ ├── filter_thumb_rise.jpg
│ │ ├── filter_thumb_romance.png
│ │ ├── filter_thumb_sakura.png
│ │ ├── filter_thumb_sierra.jpg
│ │ ├── filter_thumb_sketch.png
│ │ ├── filter_thumb_sunrise.png
│ │ ├── filter_thumb_sunset.png
│ │ ├── filter_thumb_sutro.jpg
│ │ ├── filter_thumb_sweets.png
│ │ ├── filter_thumb_tender.png
│ │ ├── filter_thumb_toastero.jpg
│ │ ├── filter_thumb_valencia.jpg
│ │ ├── filter_thumb_walden.jpg
│ │ ├── filter_thumb_warm.png
│ │ ├── filter_thumb_whitecat.png
│ │ ├── filter_thumb_xpro.jpg
│ │ ├── ic_camera_beauty.png
│ │ ├── ic_camera_beauty_pressed.png
│ │ ├── ic_camera_filter.png
│ │ ├── icon_camera_normal.png
│ │ ├── icon_camera_press.png
│ │ ├── icon_close_normal.png
│ │ ├── icon_close_pressed.png
│ │ ├── icon_take_picture_normal.png
│ │ ├── icon_take_picture_pressed.png
│ │ ├── icon_video.png
│ │ ├── take_filter_confirm_btn_skin_flat.png
│ │ ├── take_filter_favorite_btn01_layer00_skin_flat.png
│ │ ├── take_filter_favorite_btn01_layer01_skin_flat.png
│ │ ├── take_filter_favorite_btn02_skin_flat.png
│ │ ├── take_filter_favorite_icon01_skin_flat.png
│ │ ├── take_filter_favorite_icon02_skin_flat.png
│ │ └── take_filter_random_btn_skin_flat.png
│ │ ├── drawable
│ │ ├── bg_down_arrow_close.xml
│ │ ├── btn_camera_beauty.xml
│ │ ├── btn_camera_filter.xml
│ │ ├── btn_camera_shutter.xml
│ │ ├── click_button_selector.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── selector_filter_selected.xml
│ │ └── selector_switch_camera.xml
│ │ ├── layout
│ │ ├── activity_camera.xml
│ │ ├── activity_camera_demo.xml
│ │ ├── activity_egl.xml
│ │ ├── activity_fbo.xml
│ │ ├── activity_fglview.xml
│ │ ├── activity_glsurface_camera.xml
│ │ ├── activity_glsurface_camera2.xml
│ │ ├── activity_image.xml
│ │ ├── activity_list.xml
│ │ ├── activity_magic_camera.xml
│ │ ├── activity_main.xml
│ │ ├── activity_surface_camera.xml
│ │ ├── activity_surface_camera2.xml
│ │ ├── activity_texture_camera.xml
│ │ ├── activity_texture_camera2.xml
│ │ ├── activity_tranform.xml
│ │ ├── camera_filter_layout.xml
│ │ ├── filter_item_layout.xml
│ │ ├── item_button.xml
│ │ └── item_choose.xml
│ │ ├── menu
│ │ └── menu_filter.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_camera_switch.png
│ │ ├── ic_close.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_round.png
│ │ ├── icon_button_click.png
│ │ └── icon_button_click_down.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── values-zh-rCN
│ │ └── strings.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── yinge
│ └── opengl
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── openglcamera
├── .gitignore
├── CMakeLists.txt
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── yinge
│ │ └── opengl
│ │ └── camera
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── filter
│ │ │ ├── amaro_mask1.jpg
│ │ │ ├── amaro_mask2.jpg
│ │ │ ├── amaromap.png
│ │ │ ├── blackboard1024.png
│ │ │ ├── blend1.jpg
│ │ │ ├── bluevintage_mask1.jpg
│ │ │ ├── brannan_blowout.png
│ │ │ ├── brannan_contrast.png
│ │ │ ├── brannan_luma.png
│ │ │ ├── brannan_process.png
│ │ │ ├── brannan_screen.png
│ │ │ ├── brooklynCurves1.png
│ │ │ ├── brooklynCurves2.png
│ │ │ ├── calm_mask1.jpg
│ │ │ ├── calm_mask2.jpg
│ │ │ ├── earlybirdOverlayMap.png
│ │ │ ├── earlybirdblowout.png
│ │ │ ├── earlybirdcurves.png
│ │ │ ├── earlybirdmap.png
│ │ │ ├── earlybirdoverlaymap_new.png
│ │ │ ├── edgeburn.png
│ │ │ ├── fairy_tale.png
│ │ │ ├── filter_map_first.png
│ │ │ ├── flower_layer2c.jpg
│ │ │ ├── freud_rand.png
│ │ │ ├── healthy_mask_1.jpg
│ │ │ ├── hefegradientmap.png
│ │ │ ├── hefemap.png
│ │ │ ├── hefemetal.png
│ │ │ ├── hefesoftlight.png
│ │ │ ├── hudsonbackground.png
│ │ │ ├── hudsonmap.png
│ │ │ ├── inkwellmap.png
│ │ │ ├── kelvinmap.png
│ │ │ ├── line_layer_c.jpg
│ │ │ ├── lomomap_new.png
│ │ │ ├── lookup_amatorka_02.png
│ │ │ ├── lookup_highkey.png
│ │ │ ├── n1977blowout.png
│ │ │ ├── n1977map.png
│ │ │ ├── nashvillemap.png
│ │ │ ├── overlaymap.png
│ │ │ ├── pixar_curves.png
│ │ │ ├── rise_mask1.jpg
│ │ │ ├── rise_mask2.jpg
│ │ │ ├── risemap.png
│ │ │ ├── sierramap.png
│ │ │ ├── sierravignette.png
│ │ │ ├── softlight.png
│ │ │ ├── sutrocurves.png
│ │ │ ├── sutroedgeburn.png
│ │ │ ├── sutrometal.png
│ │ │ ├── toastercolorshift.png
│ │ │ ├── toastercurves.png
│ │ │ ├── toastermetal.png
│ │ │ ├── toasteroverlaymapwarm.png
│ │ │ ├── toastersoftlight.png
│ │ │ ├── toy_mask1.jpg
│ │ │ ├── toy_mask2.jpg
│ │ │ ├── toy_mask3.jpg
│ │ │ ├── valenciagradientmap.png
│ │ │ ├── valenciamap.png
│ │ │ ├── vignette_map.png
│ │ │ ├── vignettemap_new.png
│ │ │ ├── walden_map.png
│ │ │ ├── warm_layer1.jpg
│ │ │ └── xpromap.png
│ ├── java
│ │ └── com
│ │ │ └── yinge
│ │ │ └── opengl
│ │ │ └── camera
│ │ │ ├── BaseGlSurfaceView.java
│ │ │ ├── SavePictureTask.java
│ │ │ ├── camera
│ │ │ ├── CameraFilterActivity.java
│ │ │ ├── CameraGlSurfaceView.java
│ │ │ ├── CameraProxy.java
│ │ │ ├── ICamera.java
│ │ │ ├── MagicBeautyFilter.java
│ │ │ └── MagicCameraInputFilter.java
│ │ │ ├── filter
│ │ │ ├── adapter
│ │ │ │ ├── BaseRecycleViewAdapter.java
│ │ │ │ └── CameraFilterAdapter.java
│ │ │ ├── advanced
│ │ │ │ ├── MagicAmaroFilter.java
│ │ │ │ ├── MagicAntiqueFilter.java
│ │ │ │ ├── MagicBeautyFilter.java
│ │ │ │ ├── MagicBlackCatFilter.java
│ │ │ │ ├── MagicBrannanFilter.java
│ │ │ │ ├── MagicBrooklynFilter.java
│ │ │ │ ├── MagicCalmFilter.java
│ │ │ │ ├── MagicCoolFilter.java
│ │ │ │ ├── MagicCrayonFilter.java
│ │ │ │ ├── MagicEarlyBirdFilter.java
│ │ │ │ ├── MagicEmeraldFilter.java
│ │ │ │ ├── MagicEvergreenFilter.java
│ │ │ │ ├── MagicFairytaleFilter.java
│ │ │ │ ├── MagicFreudFilter.java
│ │ │ │ ├── MagicHealthyFilter.java
│ │ │ │ ├── MagicHefeFilter.java
│ │ │ │ ├── MagicHudsonFilter.java
│ │ │ │ ├── MagicImageAdjustFilter.java
│ │ │ │ ├── MagicInkwellFilter.java
│ │ │ │ ├── MagicKevinFilter.java
│ │ │ │ ├── MagicLatteFilter.java
│ │ │ │ ├── MagicLomoFilter.java
│ │ │ │ ├── MagicLookupFilter.java
│ │ │ │ ├── MagicN1977Filter.java
│ │ │ │ ├── MagicNashvilleFilter.java
│ │ │ │ ├── MagicNostalgiaFilter.java
│ │ │ │ ├── MagicPixarFilter.java
│ │ │ │ ├── MagicRiseFilter.java
│ │ │ │ ├── MagicRomanceFilter.java
│ │ │ │ ├── MagicSakuraFilter.java
│ │ │ │ ├── MagicSierraFilter.java
│ │ │ │ ├── MagicSketchFilter.java
│ │ │ │ ├── MagicSkinWhitenFilter.java
│ │ │ │ ├── MagicSunriseFilter.java
│ │ │ │ ├── MagicSunsetFilter.java
│ │ │ │ ├── MagicSutroFilter.java
│ │ │ │ ├── MagicSweetsFilter.java
│ │ │ │ ├── MagicTenderFilter.java
│ │ │ │ ├── MagicToasterFilter.java
│ │ │ │ ├── MagicValenciaFilter.java
│ │ │ │ ├── MagicWaldenFilter.java
│ │ │ │ ├── MagicWarmFilter.java
│ │ │ │ ├── MagicWhiteCatFilter.java
│ │ │ │ └── MagicXproIIFilter.java
│ │ │ ├── base
│ │ │ │ ├── MagicBaseGroupFilter.java
│ │ │ │ ├── MagicBilateralFilter.java
│ │ │ │ └── gpuimage
│ │ │ │ │ ├── GPUImageBrightnessFilter.java
│ │ │ │ │ ├── GPUImageContrastFilter.java
│ │ │ │ │ ├── GPUImageExposureFilter.java
│ │ │ │ │ ├── GPUImageFilter.java
│ │ │ │ │ ├── GPUImageHueFilter.java
│ │ │ │ │ ├── GPUImageSaturationFilter.java
│ │ │ │ │ └── GPUImageSharpenFilter.java
│ │ │ └── helper
│ │ │ │ ├── FilterAdjuster.java
│ │ │ │ ├── FilterFactory.java
│ │ │ │ ├── FilterType.java
│ │ │ │ ├── FilterTypeHelper.java
│ │ │ │ └── GPUPower.java
│ │ │ ├── image
│ │ │ ├── ImageBeautyUtil.java
│ │ │ ├── ImageEditorActivity.java
│ │ │ ├── ImageGlSurfaceView.java
│ │ │ ├── frags
│ │ │ │ ├── BaseEditFragment.java
│ │ │ │ ├── ImageAddsFragment.java
│ │ │ │ ├── ImageAdjustFragment.java
│ │ │ │ ├── ImageBeautyFragment.java
│ │ │ │ ├── ImageFilterFragment.java
│ │ │ │ └── ImageFrameFragment.java
│ │ │ └── widget
│ │ │ │ ├── BubbleSeekBar.java
│ │ │ │ └── TwoLineSeekBar.java
│ │ │ └── util
│ │ │ ├── ImageUtil.java
│ │ │ ├── OpenGlCameraSdk.java
│ │ │ ├── OpenGlUtils.java
│ │ │ ├── Rotation.java
│ │ │ └── TextureRotationUtil.java
│ ├── jni
│ │ ├── ImageBeauty.cpp
│ │ ├── bitmap
│ │ │ ├── BitmapOperation.cpp
│ │ │ ├── BitmapOperation.h
│ │ │ └── JniBitmap.h
│ │ └── com_yinge_opengl_camera_image_ImageBeautyUtil.h
│ └── res
│ │ ├── drawable-xhdpi
│ │ ├── edit_bg_adjust_contrast.png
│ │ ├── edit_bg_adjust_contrast_press.png
│ │ ├── edit_bg_adjust_exposure.png
│ │ ├── edit_bg_adjust_exposure_press.png
│ │ ├── edit_bg_adjust_hdr.png
│ │ ├── edit_bg_adjust_hdr_press.png
│ │ ├── edit_bg_adjust_saturation.png
│ │ ├── edit_bg_adjust_saturation_press.png
│ │ ├── edit_bg_adjust_sharpness.png
│ │ ├── edit_bg_adjust_sharpness_press.png
│ │ ├── edit_bg_adjust_vibrance.png
│ │ ├── edit_bg_adjust_vibrance_press.png
│ │ ├── edit_bg_done.png
│ │ ├── edit_bg_done_disenable.png
│ │ ├── edit_bg_done_press.png
│ │ ├── edit_color_hue.png
│ │ ├── edit_color_hue_press.png
│ │ ├── i_adds.png
│ │ ├── i_adds_blue.png
│ │ ├── i_auto_beauty.png
│ │ ├── i_auto_beauty_pressed.png
│ │ ├── i_cosmesis.png
│ │ ├── i_cosmesis_blue.png
│ │ ├── i_edit.png
│ │ ├── i_edit_blue.png
│ │ ├── i_effect.png
│ │ ├── i_effect_blue.png
│ │ ├── i_frame.png
│ │ ├── i_frame_blue.png
│ │ ├── i_skinprocess.png
│ │ ├── i_skinprocess_pressed.png
│ │ ├── ic_collage_layout_filters_bar_close_normal.png
│ │ ├── ic_collage_layout_filters_bar_close_pressed.png
│ │ ├── ic_seekbar_smallsize_thumb_light_normal.png
│ │ ├── ic_seekbar_smallsize_thumb_light_pressed.png
│ │ ├── ic_seekbar_thumb_light_normal.png
│ │ ├── ic_seekbar_thumb_light_pressed.png
│ │ ├── ic_seekbar_thumb_normal.png
│ │ ├── ic_seekbar_thumb_pressed.png
│ │ ├── mix_gallery_bottom_back_click.png
│ │ ├── mix_gallery_bottom_back_normal.png
│ │ ├── seekbar_bg.9.png
│ │ ├── seekbar_bg_light.9.png
│ │ ├── seekbar_primary_progress.9.png
│ │ ├── seekbar_transparent_bg.9.png
│ │ └── tooltip_bg.9.png
│ │ ├── drawable-xxhdpi
│ │ ├── filter_thumb_1977.jpg
│ │ ├── filter_thumb_amoro.jpg
│ │ ├── filter_thumb_antique.png
│ │ ├── filter_thumb_beauty.png
│ │ ├── filter_thumb_blackcat.png
│ │ ├── filter_thumb_brannan.jpg
│ │ ├── filter_thumb_brooklyn.jpg
│ │ ├── filter_thumb_calm.png
│ │ ├── filter_thumb_cool.png
│ │ ├── filter_thumb_crayon.jpg
│ │ ├── filter_thumb_earlybird.jpg
│ │ ├── filter_thumb_emerald.png
│ │ ├── filter_thumb_evergreen.png
│ │ ├── filter_thumb_fairytale.png
│ │ ├── filter_thumb_freud.jpg
│ │ ├── filter_thumb_healthy.png
│ │ ├── filter_thumb_hefe.jpg
│ │ ├── filter_thumb_hudson.jpg
│ │ ├── filter_thumb_inkwell.jpg
│ │ ├── filter_thumb_kevin.jpg
│ │ ├── filter_thumb_latte.png
│ │ ├── filter_thumb_lomo.jpg
│ │ ├── filter_thumb_nashville.jpg
│ │ ├── filter_thumb_nostalgia.png
│ │ ├── filter_thumb_original.png
│ │ ├── filter_thumb_piaxr.jpg
│ │ ├── filter_thumb_rise.jpg
│ │ ├── filter_thumb_romance.png
│ │ ├── filter_thumb_sakura.png
│ │ ├── filter_thumb_sierra.jpg
│ │ ├── filter_thumb_sketch.png
│ │ ├── filter_thumb_sunrise.png
│ │ ├── filter_thumb_sunset.png
│ │ ├── filter_thumb_sutro.jpg
│ │ ├── filter_thumb_sweets.png
│ │ ├── filter_thumb_tender.png
│ │ ├── filter_thumb_toastero.jpg
│ │ ├── filter_thumb_valencia.jpg
│ │ ├── filter_thumb_walden.jpg
│ │ ├── filter_thumb_warm.png
│ │ ├── filter_thumb_whitecat.png
│ │ ├── filter_thumb_xpro.jpg
│ │ ├── ic_camera_beauty.png
│ │ ├── ic_camera_beauty_pressed.png
│ │ ├── ic_camera_filter.png
│ │ ├── icon_camera_normal.png
│ │ ├── icon_camera_press.png
│ │ ├── icon_close_normal.png
│ │ ├── icon_close_pressed.png
│ │ ├── icon_take_picture_normal.png
│ │ ├── icon_take_picture_pressed.png
│ │ ├── icon_video.png
│ │ ├── take_filter_confirm_btn_skin_flat.png
│ │ ├── take_filter_favorite_btn01_layer00_skin_flat.png
│ │ ├── take_filter_favorite_btn01_layer01_skin_flat.png
│ │ ├── take_filter_favorite_btn02_skin_flat.png
│ │ ├── take_filter_favorite_icon01_skin_flat.png
│ │ ├── take_filter_favorite_icon02_skin_flat.png
│ │ └── take_filter_random_btn_skin_flat.png
│ │ ├── drawable
│ │ ├── bg_down_arrow_close.xml
│ │ ├── btn_camera_beauty.xml
│ │ ├── btn_camera_filter.xml
│ │ ├── btn_camera_shutter.xml
│ │ ├── btn_layout_filters_bar_close.xml
│ │ ├── click_button_selector.xml
│ │ ├── seekbar_progress.xml
│ │ ├── seekbar_progress_light.xml
│ │ ├── seekbar_thumb.xml
│ │ ├── seekbar_thumb_light.xml
│ │ ├── selector_filter_favorite_btn.xml
│ │ ├── selector_filter_selected.xml
│ │ ├── selector_image_adds.xml
│ │ ├── selector_image_back.xml
│ │ ├── selector_image_beauty.xml
│ │ ├── selector_image_edit.xml
│ │ ├── selector_image_edit_adjust_bright.xml
│ │ ├── selector_image_edit_adjust_contrast.xml
│ │ ├── selector_image_edit_adjust_exposure.xml
│ │ ├── selector_image_edit_adjust_hue.xml
│ │ ├── selector_image_edit_adjust_saturation.xml
│ │ ├── selector_image_edit_adjust_sharpness.xml
│ │ ├── selector_image_edit_adjust_vibrance.xml
│ │ ├── selector_image_edit_yellow.xml
│ │ ├── selector_image_filter.xml
│ │ ├── selector_image_fragment_skin.xml
│ │ ├── selector_image_frame.xml
│ │ ├── selector_image_save.xml
│ │ ├── selector_switch_camera.xml
│ │ └── take_filter_favorite_btn.xml
│ │ ├── layout
│ │ ├── activity_image_editor.xml
│ │ ├── activity_magic_camera.xml
│ │ ├── camera_filter_layout.xml
│ │ ├── filter_item_layout.xml
│ │ ├── fragment_image_edit_adjust.xml
│ │ ├── fragment_image_edit_beauty.xml
│ │ └── fragment_image_edit_filter.xml
│ │ ├── raw
│ │ ├── amaro.glsl
│ │ ├── antique.glsl
│ │ ├── beauty.glsl
│ │ ├── bilateralfilter.glsl
│ │ ├── bilateralfilter_low.glsl
│ │ ├── blackcat.glsl
│ │ ├── brannan.glsl
│ │ ├── brooklyn.glsl
│ │ ├── calm.glsl
│ │ ├── camera_input_fragment.glsl
│ │ ├── camera_input_vertex.glsl
│ │ ├── camera_photo_beauty_frag.glsl
│ │ ├── cool.glsl
│ │ ├── crayon.glsl
│ │ ├── default_fragment.glsl
│ │ ├── default_vertex.glsl
│ │ ├── earlybird.glsl
│ │ ├── emerald.glsl
│ │ ├── evergreen.glsl
│ │ ├── freud.glsl
│ │ ├── healthy.glsl
│ │ ├── hefe.glsl
│ │ ├── hudson.glsl
│ │ ├── inkwell.glsl
│ │ ├── kevin_new.glsl
│ │ ├── latte.glsl
│ │ ├── lomo.glsl
│ │ ├── n1977.glsl
│ │ ├── nashville.glsl
│ │ ├── nostalgia.glsl
│ │ ├── pixar.glsl
│ │ ├── rise.glsl
│ │ ├── romance.glsl
│ │ ├── sakura.glsl
│ │ ├── sierra.glsl
│ │ ├── sketch.glsl
│ │ ├── skinwhiten.glsl
│ │ ├── suger_tablets.glsl
│ │ ├── sunrise.glsl
│ │ ├── sunset.glsl
│ │ ├── sutro.glsl
│ │ ├── sweets.glsl
│ │ ├── tender.glsl
│ │ ├── toaster2_filter_shader.glsl
│ │ ├── valencia.glsl
│ │ ├── walden.glsl
│ │ ├── warm.glsl
│ │ ├── whitecat.glsl
│ │ └── xproii_filter_shader.glsl
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── yinge
│ └── opengl
│ └── camera
│ └── ExampleUnitTest.java
├── screenshot
├── Camera+GLSufaceView.png
├── EGL渲染.png
├── fbo使用.png
├── 代码结构1.jpg
├── 代码结构2.jpg
├── 图形变换.png
├── 图片处理.png
├── 滤镜相机.png
├── 相机DEMO.png
├── 绘制形体.png
├── 美颜相机.png
└── 首页.png
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 1,AndroidOpenGLES
2 | 学习实践OpenGLES,包括
3 | 1. 绘制几何图形,添加渲染三角形,等腰三角形,彩色等腰三角形,和圆,
4 | 2. 使用OpenGlES 对图片进行模糊,冷暖色调等处理,
5 | 3. 编写glsl着色器语言,基于Camera+GlSurfaceView实现相机实时预览
6 | ,实时美颜,实时预览滤镜功能,以及对相册单张图片进行编辑,美颜,滤镜功能,
7 | 4. 和 脱离GLSurfaceView的Render环境,独立创建EGL上下文环境渲染,FBO帧缓冲对象的使用和离屏渲染
8 | ### 2,代码结构
9 | |||
10 | |:---:|:---:|
11 | |||
12 | ### 3,代码实例
13 | ||||
14 | |:---:|:---:|:---:|
15 | ||||
16 | ||||
17 | ||||
18 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 28
5 | defaultConfig {
6 | applicationId "com.yinge.opengl"
7 | minSdkVersion 21
8 | targetSdkVersion 28
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | implementation fileTree(include: ['*.jar'], dir: 'libs')
23 | implementation 'com.android.support:appcompat-v7:28.0.0'
24 | implementation 'com.android.support.constraint:constraint-layout:1.1.3'
25 | testImplementation 'junit:junit:4.12'
26 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
27 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
28 | implementation 'com.android.support:appcompat-v7:28.0.0'
29 | implementation 'com.android.support:recyclerview-v7:28.0.0'
30 | implementation project(':openglcamera')
31 | }
32 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/yinge/opengl/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.yinge.opengl", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/assets/camera/base_vertex.glsl:
--------------------------------------------------------------------------------
1 | // 顶点坐标
2 | attribute vec4 vPosition;
3 | // 顶点对应的纹理坐标
4 | attribute vec2 vCoord;
5 | // 顶点变换矩阵
6 | uniform mat4 vMatrix;
7 |
8 | // 传给片元着色器的 纹理坐标
9 | varying vec2 aTextureCoordinate;
10 |
11 | void main(){
12 | gl_Position = vMatrix * vPosition;
13 | aTextureCoordinate = vCoord;
14 | }
--------------------------------------------------------------------------------
/app/src/main/assets/camera/gray_fragment.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | varying vec2 aTextureCoordinate;
3 | uniform sampler2D vTexture;
4 | void main() {
5 | vec4 color = texture2D( vTexture, aTextureCoordinate);
6 | float rgb = color.g;
7 | vec4 c = vec4(rgb,rgb,rgb,color.a);
8 | gl_FragColor = c;
9 | }
--------------------------------------------------------------------------------
/app/src/main/assets/camera/oes_base_fragment.glsl:
--------------------------------------------------------------------------------
1 | #extension GL_OES_EGL_image_external : require
2 | precision mediump float;
3 | varying vec2 aTextureCoordinate;
4 | // 外部纹理 采样器
5 | uniform samplerExternalOES vTexture;
6 | void main() {
7 | // 在赋值给gl_FragColor之前,对color进行更改,做到实时滤镜
8 | gl_FragColor = texture2D(vTexture, aTextureCoordinate );
9 | }
--------------------------------------------------------------------------------
/app/src/main/assets/camera/oes_base_vertex.glsl:
--------------------------------------------------------------------------------
1 | // 顶点坐标
2 | attribute vec4 vPosition;
3 | // 顶点对应的纹理坐标
4 | attribute vec2 vCoord;
5 | // 顶点变换矩阵
6 | uniform mat4 vMatrix;
7 |
8 | // 纹理坐标变换矩阵
9 | uniform mat4 vCoordMatrix;
10 | // 传给片元着色器的 纹理坐标
11 | varying vec2 aTextureCoordinate;
12 |
13 | void main(){
14 | gl_Position = vMatrix * vPosition;
15 | aTextureCoordinate = (vCoordMatrix * vec4(vCoord,0,1)).xy;
16 | }
--------------------------------------------------------------------------------
/app/src/main/assets/image/half_color_vertex.glsl:
--------------------------------------------------------------------------------
1 | // 顶点坐标
2 | attribute vec4 vPosition;
3 | // 顶点纹理坐标
4 | attribute vec2 vCoordinate;
5 | // 总变换矩阵
6 | uniform mat4 vMatrix;
7 |
8 | // 传递给片元 的 纹理坐标
9 | varying vec2 aCoordinate;
10 | // 传递给片元 的 顶点坐标
11 | varying vec4 aPos;
12 | // 传递给片元 的 变换后的坐标
13 | varying vec4 gPosition;
14 |
15 | void main() {
16 | gl_Position = vMatrix * vPosition;
17 |
18 | aPos = vPosition;
19 | aCoordinate = vCoordinate;
20 | gPosition = vMatrix * vPosition;
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/a.glsl:
--------------------------------------------------------------------------------
1 | #version 120
2 |
3 | void main() {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/fshader/fColorFullTriangle.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | varying vec4 vColor;
3 | void main() {
4 | gl_FragColor = vColor;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/fshader/fOval.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | uniform vec4 vColor;
3 | void main() {
4 | gl_FragColor = vColor;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/fshader/fRegularTriangle.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | uniform vec4 vColor;
3 | void main() {
4 | gl_FragColor = vColor;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/fshader/fSquare.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | uniform vec4 vColor;
3 | void main() {
4 | gl_FragColor = vColor;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/fshader/fTriangle.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | uniform vec4 vColor;
3 | void main() {
4 | gl_FragColor = vColor;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/vshader/vColorFullTriangle.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 vPosition;
2 | uniform mat4 vMatrix;
3 | varying vec4 vColor;
4 | attribute vec4 aColor;
5 | void main() {
6 | gl_Position = vMatrix * vPosition;
7 | vColor = aColor;
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/vshader/vOval.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 vPosition;
2 | uniform mat4 vMatrix;
3 | void main() {
4 | gl_Position = vMatrix * vPosition;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/vshader/vRegularTriangle.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 vPosition;
2 | uniform mat4 vMatrix;
3 | void main() {
4 | gl_Position = vMatrix * vPosition;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/vshader/vSquare.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 vPosition;
2 | uniform mat4 vMatrix;
3 | void main() {
4 | gl_Position = vMatrix * vPosition;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/shape/vshader/vTriangle.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 vPosition;
2 | void main() {
3 | gl_Position = vPosition;
4 | }
5 |
--------------------------------------------------------------------------------
/app/src/main/assets/texture/fengj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/assets/texture/fengj.png
--------------------------------------------------------------------------------
/app/src/main/assets/transform/fcube.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 | varying vec4 vColor;
3 | void main() {
4 | gl_FragColor = vColor;
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/assets/transform/vcube.glsl:
--------------------------------------------------------------------------------
1 | // 顶点坐标(物体空间)
2 | attribute vec4 vPosition;
3 | // 总矩阵
4 | uniform mat4 vMatrix;
5 | // 渲染颜色
6 | attribute vec4 aColor;
7 |
8 | // 传递给片元 着色器
9 | varying vec4 vColor;
10 | void main() {
11 | gl_Position = vMatrix * vPosition;
12 | vColor = aColor;
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/OpenGlApplication.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl;
2 |
3 | import android.app.Application;
4 |
5 | import com.yinge.opengl.camera.util.OpenGlCameraSdk;
6 |
7 | /**
8 | * 功能:
9 | *
10 | * Copyright corp.xxx.com 2018 All right reserved
11 | *
12 | * @author tuke 时间 2019/7/17
13 | * @email tuke@corp.xxx.com
14 | *
15 | * 最后修改人:无
16 | *
17 | */
18 | public class OpenGlApplication extends Application {
19 |
20 | private static OpenGlApplication app;
21 | @Override
22 | public void onCreate() {
23 | super.onCreate();
24 | app = this;
25 | OpenGlCameraSdk.getInstance().init(this);
26 | }
27 |
28 | public static OpenGlApplication getInstance() {
29 | return app;
30 | }
31 |
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/camera/filter/GrayFilter.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter;
2 |
3 | import android.content.Context;
4 |
5 | /**
6 | * 功能:灰色过滤器
7 | *
8 | * Copyright corp.xxx.com 2018 All right reserved
9 | *
10 | * @author tuke 时间 2019/7/14
11 | * @email tuke@xxx.com
12 | *
13 | * 最后修改人:无
14 | *
15 | */
16 | public class GrayFilter extends AbsOesImageFilter {
17 |
18 |
19 | public GrayFilter(Context context) {
20 | super(context);
21 | }
22 |
23 | @Override
24 | public String getVertexResPath() {
25 | return "camera/base_vertex.glsl";
26 | }
27 |
28 | @Override
29 | public String getFragmentResPath() {
30 | return "camera/gray_fragment.glsl";
31 | }
32 |
33 | @Override
34 | public void initOtherHandle() {
35 |
36 | }
37 |
38 | @Override
39 | public void onSizeChanged(int width, int height) {
40 |
41 | }
42 |
43 | @Override
44 | public void setOtherHandle() {
45 |
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/camera/filter/OesFilter.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter;
2 |
3 | import android.content.Context;
4 | import android.opengl.GLES11Ext;
5 | import android.opengl.GLES20;
6 |
7 | import java.util.Arrays;
8 |
9 | /**
10 | * 功能:
11 | *
12 | * Copyright corp.xxx.com 2018 All right reserved
13 | *
14 | * @author tuke 时间 2019/7/14
15 | * @email tuke@xxx.com
16 | *
17 | * 最后修改人:无
18 | *
19 | */
20 | public class OesFilter extends AbsOesImageFilter {
21 |
22 | // 纹理坐标变换矩阵引用
23 | private int glCoordMatrixHandle;
24 | // 纹理坐标变换矩阵 - 单位矩阵
25 | private float[] mCoordMatrix= Arrays.copyOf(IDENTITY,16);
26 |
27 | public OesFilter(Context context) {
28 | super(context);
29 | }
30 |
31 | @Override
32 | public String getVertexResPath() {
33 | return "camera/oes_base_vertex.glsl";
34 | }
35 |
36 | @Override
37 | public String getFragmentResPath() {
38 | return "camera/oes_base_fragment.glsl";
39 | }
40 |
41 | @Override
42 | public void initOtherHandle() {
43 | glCoordMatrixHandle = GLES20.glGetUniformLocation(mProgram,"vCoordMatrix");
44 | }
45 |
46 | @Override
47 | public void onSizeChanged(int width, int height) {
48 |
49 | }
50 |
51 | @Override
52 | public void setOtherHandle() {
53 | GLES20.glUniformMatrix4fv(glCoordMatrixHandle,1,false,mCoordMatrix,0);
54 | }
55 |
56 | @Override
57 | protected void onBindTexture() {
58 | GLES20.glActiveTexture(GLES20.GL_TEXTURE0 + getTextureType());
59 | // 绑定外部纹理id
60 | GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, getTextureId());
61 | GLES20.glUniform1i(glTextureHandle, getTextureType());
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/image/GLImageView.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.image;
2 |
3 | import android.content.Context;
4 | import android.graphics.BitmapFactory;
5 | import android.opengl.GLSurfaceView;
6 | import android.util.AttributeSet;
7 |
8 | import com.yinge.opengl.image.filter.AbsImageFilter;
9 |
10 | import java.io.IOException;
11 |
12 | /**
13 | * 功能:
14 | *
15 | * Copyright corp.xxx.com 2018 All right reserved
16 | *
17 | * @author tuke 时间 2019/7/11
18 | * @email tuke@xxx.com
19 | *
20 | * 最后修改人:无
21 | *
22 | */
23 | public class GLImageView extends GLSurfaceView {
24 |
25 | private GLImageRender mRender;
26 |
27 | public GLImageView(Context context) {
28 | super(context);
29 | init();
30 | }
31 |
32 | public GLImageView(Context context, AttributeSet attrs) {
33 | super(context, attrs);
34 | init();
35 | }
36 |
37 | public void init(){
38 | setEGLContextClientVersion(2);
39 | mRender = new GLImageRender(getContext());
40 | setRenderer(mRender);
41 | setRenderMode(RENDERMODE_WHEN_DIRTY);
42 |
43 |
44 | try {
45 | mRender.setBitmap(BitmapFactory.decodeStream(getResources().getAssets().open("texture/fengj.png")));
46 | requestRender();
47 | } catch (IOException e) {
48 | e.printStackTrace();
49 | }
50 | }
51 |
52 | public GLImageRender getRender() {
53 | return mRender;
54 | }
55 |
56 | /**
57 | * 设置过滤器
58 | * @param filter
59 | */
60 | public void setFilter(AbsImageFilter filter) {
61 | mRender.setImageFilter(filter);
62 |
63 | }
64 |
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/image/filter/ContrastColorFilter.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.image.filter;
2 |
3 | import android.content.Context;
4 | import android.opengl.GLES20;
5 |
6 | /**
7 | * 功能:
8 | *
9 | * Copyright corp.xxx.com 2018 All right reserved
10 | *
11 | * @author tuke 时间 2019/7/13
12 | * @email tuke@xxx.com
13 | *
14 | * 最后修改人:无
15 | *
16 | */
17 | public class ContrastColorFilter extends AbsImageFilter {
18 |
19 | private Filter mFilter;
20 |
21 | private int mChangeTypeHandle;
22 | private int mChangeColorHandle;
23 |
24 | public ContrastColorFilter(Context mContext, Filter filter) {
25 | super(mContext, "image/half_color_vertex.glsl", "image/half_color_fragment.glsl");
26 | this.mFilter = filter;
27 |
28 | }
29 |
30 | @Override
31 | public void onGetOtherHandle(int mProgram) {
32 | mChangeTypeHandle = GLES20.glGetUniformLocation(mProgram, "vChangeType");
33 | mChangeColorHandle = GLES20.glGetUniformLocation(mProgram, "vChangeColor");
34 | }
35 |
36 | @Override
37 | public void onSetOtherHandle() {
38 | GLES20.glUniform1i(mChangeTypeHandle, mFilter.getType());
39 | GLES20.glUniform3fv(mChangeColorHandle, 1, mFilter.data(), 0);
40 | }
41 |
42 |
43 | public enum Filter{
44 |
45 | NONE(0,new float[]{0.0f,0.0f,0.0f}),
46 | GRAY(1,new float[]{0.299f,0.587f,0.114f}),
47 | COOL(2,new float[]{0.0f,0.0f,0.1f}),
48 | WARM(2,new float[]{0.1f,0.1f,0.0f}),
49 | BLUR(3,new float[]{0.006f,0.004f,0.002f}),
50 | MAGN(4,new float[]{0.0f,0.0f,0.4f});
51 |
52 | private int vChangeType;
53 | private float[] data;
54 |
55 | Filter(int vChangeType,float[] data){
56 | this.vChangeType=vChangeType;
57 | this.data=data;
58 | }
59 |
60 | public int getType(){
61 | return vChangeType;
62 | }
63 |
64 | public float[] data(){
65 | return data;
66 | }
67 |
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/render/GLShapeRender.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.render;
2 |
3 | import android.opengl.GLES20;
4 | import android.util.Log;
5 | import android.view.View;
6 |
7 | import java.lang.reflect.Constructor;
8 |
9 | import javax.microedition.khronos.egl.EGLConfig;
10 | import javax.microedition.khronos.opengles.GL10;
11 |
12 | /**
13 | * 功能:
14 | *
15 | * Copyright corp.xxx.com 2018 All right reserved
16 | *
17 | * @author tuke 时间 2019/7/7
18 | * @email tuke@xxx.com
19 | *
20 | * 最后修改人:无
21 | *
22 | */
23 | public class GLShapeRender extends Shape {
24 |
25 | protected static final String TAG = GLShapeRender.class.getSimpleName();
26 |
27 | private Shape shape;
28 | private Class extends Shape> clazz = Triangle.class;
29 |
30 | public GLShapeRender(View view) {
31 | super(view);
32 | }
33 |
34 | @Override
35 | public void onSurfaceCreated(GL10 gl, EGLConfig config) {
36 | GLES20.glClearColor(0.5f,0.5f,0.5f,1.0f);
37 | Log.e(TAG,"onSurfaceCreated");
38 |
39 | try {
40 | Constructor constructor = clazz.getDeclaredConstructor(View.class);
41 | constructor.setAccessible(true);
42 | shape= (Shape) constructor.newInstance(mView);
43 |
44 |
45 | } catch (Exception e) {
46 | shape=new Triangle(mView);
47 | }
48 | shape.onSurfaceCreated(gl,config);
49 | }
50 |
51 | @Override
52 | public void onSurfaceChanged(GL10 gl, int width, int height) {
53 | Log.e(TAG,"onSurfaceChanged");
54 | GLES20.glViewport(0,0, width, height);
55 |
56 | shape.onSurfaceChanged(gl, width, height);
57 | }
58 |
59 | @Override
60 | public void onDrawFrame(GL10 gl) {
61 | Log.e(TAG,"onDrawFrame");
62 | GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT|GLES20.GL_DEPTH_BUFFER_BIT);
63 |
64 | shape.onDrawFrame(gl);
65 | }
66 |
67 | public void setShape(Class extends Shape> clazz) {
68 | this.clazz = clazz;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/render/GLShapeView.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.render;
2 |
3 | import android.content.Context;
4 | import android.opengl.GLSurfaceView;
5 | import android.util.AttributeSet;
6 |
7 | /**
8 | * 功能:
9 | *
10 | * Copyright corp.xxx.com 2018 All right reserved
11 | *
12 | * @author tuke 时间 2019/7/7
13 | * @email tuke@xxx.com
14 | *
15 | * 最后修改人:无
16 | *
17 | */
18 | public class GLShapeView extends GLSurfaceView {
19 |
20 | private GLShapeRender shapeRender;
21 |
22 | public GLShapeView(Context context) {
23 | super(context);
24 | init();
25 | }
26 |
27 | public GLShapeView(Context context, AttributeSet attrs) {
28 | super(context, attrs);
29 | init();
30 | }
31 |
32 | private void init() {
33 | setEGLContextClientVersion(2);
34 | setRenderer(shapeRender = new GLShapeRender(this));
35 | setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
36 | }
37 |
38 | /**
39 | * 设置形状
40 | * @param clazz
41 | */
42 | public void setShape(Class extends Shape> clazz) {
43 |
44 | try {
45 | shapeRender.setShape(clazz);
46 | } catch (Exception e) {
47 | e.printStackTrace();
48 | }
49 |
50 | }
51 |
52 |
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/render/GLShapeViewActivity.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * FGLViewActivity.java
4 | *
5 | * Created by Wuwang on 2016/9/30
6 | */
7 | package com.yinge.opengl.render;
8 |
9 | import android.content.Intent;
10 | import android.os.Bundle;
11 | import android.support.annotation.Nullable;
12 | import android.support.v7.app.AppCompatActivity;
13 | import android.view.View;
14 | import android.widget.Button;
15 |
16 | import com.yinge.opengl.R;
17 |
18 |
19 | /**
20 | * Description:
21 | */
22 | public class GLShapeViewActivity extends AppCompatActivity implements View.OnClickListener {
23 |
24 | private static final int REQ_CHOOSE=0x0101;
25 |
26 | private Button mChange;
27 | private GLShapeView mGLView;
28 |
29 |
30 | @Override
31 | protected void onCreate(@Nullable Bundle savedInstanceState) {
32 | super.onCreate(savedInstanceState);
33 | setContentView(R.layout.activity_fglview);
34 | init();
35 | }
36 |
37 | private void init(){
38 | mChange= (Button) findViewById(R.id.mChange);
39 | mGLView= (GLShapeView) findViewById(R.id.mGLView);
40 | }
41 |
42 | public void onClick(View view){
43 | switch (view.getId()){
44 | case R.id.mChange:
45 | Intent intent=new Intent(this,ChooseShapeActivity.class);
46 | startActivityForResult(intent,REQ_CHOOSE);
47 | break;
48 | }
49 | }
50 |
51 | @Override
52 | protected void onActivityResult(int requestCode, int resultCode, Intent data) {
53 | super.onActivityResult(requestCode, resultCode, data);
54 | if(resultCode==RESULT_OK){
55 | mGLView.setShape((Class extends Shape>) data.getSerializableExtra("name"));
56 | }
57 | }
58 |
59 | @Override
60 | protected void onResume() {
61 | super.onResume();
62 | mGLView.onResume();
63 | }
64 |
65 | @Override
66 | protected void onPause() {
67 | super.onPause();
68 | mGLView.onPause();
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/render/Shape.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.render;
2 |
3 | import android.opengl.GLES20;
4 | import android.opengl.GLSurfaceView;
5 | import android.view.View;
6 |
7 | /**
8 | * 功能:
9 | *
10 | * Copyright corp.xxx.com 2018 All right reserved
11 | *
12 | * @author tuke 时间 2019/7/7
13 | * @email tuke@xxx.com
14 | *
15 | * 最后修改人:无
16 | *
17 | */
18 | public abstract class Shape implements GLSurfaceView.Renderer {
19 |
20 | protected View mView;
21 |
22 | public Shape(View view) {
23 | this.mView = view;
24 | }
25 |
26 | /**
27 | * 加载,编译着色器
28 | * @param type {@link GLES20#GL_VERTEX_SHADER,GLES20#GL_FRAGMENT_SHADER}
29 | * @param shaderCode 着色器源代码
30 | * @return
31 | */
32 | public int loadShader(int type, String shaderCode) {
33 | // 根据type创建顶点着色器或者片元着色器
34 | int shader = GLES20.glCreateShader(type);
35 | // 将着色器代码加入着色器
36 | GLES20.glShaderSource(shader, shaderCode);
37 | // 编译着色器
38 | GLES20.glCompileShader(shader);
39 | // 获取着色器的编译状态
40 | int[] compiled = new int[1];
41 | GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
42 | return shader;
43 |
44 | }
45 |
46 |
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/transform/TransformActivity.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.transform;
2 |
3 | import android.opengl.GLSurfaceView;
4 | import android.os.Bundle;
5 | import android.support.annotation.Nullable;
6 | import android.support.v7.app.AppCompatActivity;
7 |
8 | import com.yinge.opengl.R;
9 |
10 |
11 | /**
12 | * 矩阵变化 demo
13 | */
14 |
15 | public class TransformActivity extends AppCompatActivity {
16 |
17 | private GLSurfaceView mGLView;
18 | private TransformRender render;
19 |
20 | @Override
21 | protected void onCreate(@Nullable Bundle savedInstanceState) {
22 | super.onCreate(savedInstanceState);
23 | setContentView(R.layout.activity_tranform);
24 | initGL();
25 | }
26 |
27 | public void initGL(){
28 | mGLView= (GLSurfaceView) findViewById(R.id.mGLView);
29 | mGLView.setEGLContextClientVersion(2);
30 | render = new TransformRender(this);
31 | mGLView.setRenderer(render);
32 | mGLView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/util/PermissionUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * PermissionUtils.java
4 | *
5 | * Created by Wuwang on 2016/11/14
6 | * Copyright © 2016年 深圳哎吖科技. All rights reserved.
7 | */
8 | package com.yinge.opengl.util;
9 |
10 | import android.Manifest;
11 | import android.app.Activity;
12 | import android.content.pm.PackageManager;
13 | import android.os.Build;
14 | import android.support.v4.app.ActivityCompat;
15 |
16 | /**
17 | * Description:
18 | */
19 | public class PermissionUtils {
20 |
21 |
22 | public static void askPermission(Activity context, String[] permissions, int req, Runnable
23 | runnable){
24 | if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){
25 | int result= ActivityCompat.checkSelfPermission(context,permissions[0]);
26 | if(result== PackageManager.PERMISSION_GRANTED){
27 | runnable.run();
28 | }else{
29 | ActivityCompat.requestPermissions(context,new String[]{Manifest.permission.CAMERA
30 | , Manifest.permission.WRITE_EXTERNAL_STORAGE},req);
31 | }
32 | }else{
33 | runnable.run();
34 | }
35 | }
36 |
37 | public static void onRequestPermissionsResult(boolean isReq, int[] grantResults, Runnable
38 | okRun, Runnable deniRun){
39 | if(isReq){
40 | if (grantResults.length > 0&&grantResults[0]== PackageManager.PERMISSION_GRANTED) {
41 | okRun.run();
42 | } else {
43 | deniRun.run();
44 | }
45 | }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/yinge/opengl/util/ScaleTypeMatrix.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.util;
2 |
3 | import android.opengl.Matrix;
4 |
5 | /**
6 | * 功能:
7 | *
8 | * Copyright corp.xxx.com 2018 All right reserved
9 | *
10 | * @author tuke 时间 2019/7/14
11 | * @email tuke@xxx.com
12 | *
13 | * 最后修改人:无
14 | *
15 | */
16 | public class ScaleTypeMatrix {
17 |
18 |
19 | /**
20 | * @return 单位矩阵
21 | */
22 | public static float[] getIdentityMatrix(){
23 | return new float[]{
24 | 1,0,0,0,
25 | 0,1,0,0,
26 | 0,0,1,0,
27 | 0,0,0,1
28 | };
29 | }
30 |
31 | /**
32 | * 计算 mvp矩阵
33 | * @param mvpMatrix 最终mvp矩阵
34 | * @param imageWidth 图像宽
35 | * @param imageHeight 图像高
36 | * @param viewWidth 视图宽
37 | * @param viewHeight 视图高
38 | */
39 | public static void getMVPMatrix(float[] mvpMatrix,int imageWidth,int imageHeight,int viewWidth,int viewHeight){
40 |
41 | if(imageHeight > 0&& imageWidth >0 && viewWidth > 0 && viewHeight > 0){
42 |
43 | float viewRatio = (float)viewWidth / viewHeight;
44 | float imageRatio = (float)imageWidth / imageHeight;
45 | float[] projectionMatrix = new float[16];
46 | float[] cameraMatrix = new float[16];
47 | // 设置投影矩阵
48 | if(imageRatio > viewRatio){
49 | Matrix.orthoM(projectionMatrix,0,- viewRatio/imageRatio,viewRatio/imageRatio,-1,1,1,3);
50 | }else{
51 | Matrix.orthoM(projectionMatrix,0,-1,1,-imageRatio / viewRatio,imageRatio / viewRatio,1,3);
52 | }
53 | // 设置相机矩阵
54 | Matrix.setLookAtM(cameraMatrix,0,0,0,1,0,0,0,0,1,0);
55 | // 计算mvp矩阵
56 | Matrix.multiplyMM(mvpMatrix,0,projectionMatrix,0,cameraMatrix,0);
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_1977.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_1977.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_amoro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_amoro.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_antique.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_antique.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_beauty.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_blackcat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_blackcat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_brannan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_brannan.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_brooklyn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_brooklyn.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_calm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_calm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_cool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_cool.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_crayon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_crayon.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_earlybird.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_earlybird.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_emerald.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_emerald.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_evergreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_evergreen.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_fairytale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_fairytale.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_freud.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_freud.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_healthy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_healthy.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_hefe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_hefe.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_hudson.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_hudson.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_inkwell.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_inkwell.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_kevin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_kevin.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_latte.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_latte.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_lomo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_lomo.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_nashville.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_nashville.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_nostalgia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_nostalgia.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_original.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_piaxr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_piaxr.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_rise.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_rise.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_romance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_romance.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sakura.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sakura.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sierra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sierra.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sketch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sketch.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sunrise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sunrise.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sunset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sunset.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sutro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sutro.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_sweets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_sweets.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_tender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_tender.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_toastero.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_toastero.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_valencia.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_valencia.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_walden.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_walden.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_warm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_warm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_whitecat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_whitecat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/filter_thumb_xpro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/filter_thumb_xpro.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_camera_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/ic_camera_beauty.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_camera_beauty_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/ic_camera_beauty_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_camera_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/ic_camera_filter.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_camera_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_camera_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_camera_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_camera_press.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_close_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_close_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_close_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_close_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_take_picture_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_take_picture_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_take_picture_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_take_picture_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/icon_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/icon_video.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_confirm_btn_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_confirm_btn_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_favorite_btn01_layer00_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_favorite_btn01_layer00_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_favorite_btn01_layer01_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_favorite_btn01_layer01_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_favorite_btn02_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_favorite_btn02_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_favorite_icon01_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_favorite_icon01_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_favorite_icon02_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_favorite_icon02_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/take_filter_random_btn_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/drawable-xhdpi/take_filter_random_btn_skin_flat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_down_arrow_close.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_camera_beauty.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_camera_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_camera_shutter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/click_button_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_filter_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_switch_camera.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_camera.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_egl.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_fbo.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_fglview.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
10 |
16 |
17 |
18 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tranform.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/camera_filter_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
18 |
19 |
23 |
24 |
25 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/filter_item_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
14 |
15 |
16 |
22 |
23 |
24 |
29 |
30 |
34 |
35 |
41 |
42 |
43 |
44 |
45 |
54 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_choose.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_camera_switch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxhdpi/ic_camera_switch.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxhdpi/ic_close.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/icon_button_click.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxhdpi/icon_button_click.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/icon_button_click_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxhdpi/icon_button_click_down.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 原图
4 | 白猫
5 | 黑猫
6 | 浪漫
7 | 樱花
8 | 复古
9 | 美肤
10 | 平静
11 | 冰冷
12 | 祖母绿
13 | 常青
14 | 童话
15 | 健康
16 | 拿铁
17 | 怀旧
18 | 温柔
19 | 温暖
20 | 甜品
21 | 日出
22 | 日落
23 | 美白
24 | 蜡笔
25 | 素描
26 |
27 | 滤镜
28 | 编辑
29 | 装饰
30 | 边框
31 | 美颜
32 |
33 | 对比度
34 | 曝光
35 | 自然饱和度
36 | 饱和度
37 | 锐化
38 | 亮度
39 | 色调
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | #0688c4
8 | #FF444444
9 | #DD0688c4
10 | #FF4081
11 | #FF111111
12 | #FFFFFFFF
13 |
14 | #FFFFFFFF
15 | #FF2B2B2B
16 |
17 |
18 | #ff5cbadc
19 | #3d5afe
20 | #1e3250
21 | #ff6666
22 | #b93221
23 | #fe9833
24 | #cc99cc
25 | #c4c4c4
26 | #c8ca34
27 | #568f35
28 | #e69138
29 | #c8ca34
30 | #ff9933
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 | 10dp
7 | 16sp
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/test/java/com/yinge/opengl/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 |
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.3.2'
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | jcenter()
21 |
22 | }
23 | }
24 |
25 | task clean(type: Delete) {
26 | delete rootProject.buildDir
27 | }
28 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 |
15 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jul 05 12:19:20 CST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
7 |
--------------------------------------------------------------------------------
/openglcamera/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/openglcamera/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # For more information about using CMake with Android Studio, read the
2 | # documentation: https://d.android.com/studio/projects/add-native-code.html
3 |
4 | # Sets the minimum version of CMake required to build the native library.
5 |
6 | cmake_minimum_required(VERSION 3.4.1)
7 |
8 | # Creates and names a library, sets it as either STATIC
9 | # or SHARED, and provides the relative paths to its source code.
10 | # You can define multiple libraries, and CMake builds them for you.
11 | # Gradle automatically packages shared libraries with your APK.
12 |
13 | set(APP_SRC
14 | src/main/jni/ImageBeauty.cpp
15 | src/main/jni/bitmap/BitmapOperation.cpp
16 | )
17 |
18 | add_library( # Sets the name of the library.
19 | ImageBeauty
20 |
21 | # Sets the library as a shared library.
22 | SHARED
23 |
24 | # Provides a relative path to your source file(s).
25 | ${APP_SRC}
26 | )
27 |
28 | # Searches for a specified prebuilt library and stores the path as a
29 | # variable. Because CMake includes system libraries in the search path by
30 | # default, you only need to specify the name of the public NDK library
31 | # you want to add. CMake verifies that the library exists before
32 | # completing its build.
33 |
34 | find_library( # Sets the name of the path variable.
35 | log-lib
36 |
37 | # Specifies the name of the NDK library that
38 | # you want CMake to locate.
39 | log )
40 |
41 | # Specifies libraries CMake should link to your target library. You
42 | # can link multiple libraries, such as libraries you define in this
43 | # build script, prebuilt third-party libraries, or system libraries.
44 |
45 | target_link_libraries( # Specifies the target library.
46 | ImageBeauty
47 | -ljnigraphics
48 |
49 | # Links the target library to the log library
50 | # included in the NDK.
51 | ${log-lib} )
--------------------------------------------------------------------------------
/openglcamera/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 28
5 |
6 |
7 |
8 | defaultConfig {
9 | minSdkVersion 21
10 | targetSdkVersion 28
11 | versionCode 1
12 | versionName "1.0"
13 |
14 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
15 |
16 | externalNativeBuild {
17 | cmake {
18 | cppFlags ""
19 | //生成多个版本的so文件
20 | abiFilters 'arm64-v8a','armeabi-v7a','x86','x86_64'
21 |
22 | }
23 | }
24 |
25 | sourceSets.main{
26 | jni.srcDirs = ['src/main/jni']
27 | jniLibs.srcDir "src/main/libs"
28 | }
29 | }
30 |
31 | buildTypes {
32 | release {
33 | minifyEnabled false
34 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
35 | }
36 | }
37 | externalNativeBuild {
38 | cmake {
39 | path file('CMakeLists.txt')
40 | }
41 | }
42 |
43 | }
44 |
45 | dependencies {
46 | implementation fileTree(dir: 'libs', include: ['*.jar'])
47 |
48 | implementation 'com.android.support:appcompat-v7:28.0.0'
49 | implementation 'com.android.support.constraint:constraint-layout:1.1.3'
50 | testImplementation 'junit:junit:4.12'
51 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
52 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
53 |
54 | implementation 'com.android.support:recyclerview-v7:28.0.0'
55 | }
56 |
--------------------------------------------------------------------------------
/openglcamera/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/openglcamera/src/androidTest/java/com/yinge/opengl/camera/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.yinge.opengl.camera.test", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/openglcamera/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/amaro_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/amaro_mask1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/amaro_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/amaro_mask2.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/amaromap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/amaromap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/blackboard1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/blackboard1024.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/blend1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/blend1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/bluevintage_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/bluevintage_mask1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brannan_blowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brannan_blowout.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brannan_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brannan_contrast.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brannan_luma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brannan_luma.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brannan_process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brannan_process.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brannan_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brannan_screen.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brooklynCurves1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brooklynCurves1.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/brooklynCurves2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/brooklynCurves2.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/calm_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/calm_mask1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/calm_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/calm_mask2.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/earlybirdOverlayMap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/earlybirdOverlayMap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/earlybirdblowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/earlybirdblowout.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/earlybirdcurves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/earlybirdcurves.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/earlybirdmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/earlybirdmap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/earlybirdoverlaymap_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/earlybirdoverlaymap_new.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/edgeburn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/edgeburn.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/fairy_tale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/fairy_tale.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/filter_map_first.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/filter_map_first.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/flower_layer2c.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/flower_layer2c.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/freud_rand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/freud_rand.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/healthy_mask_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/healthy_mask_1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/hefegradientmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/hefegradientmap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/hefemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/hefemap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/hefemetal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/hefemetal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/hefesoftlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/hefesoftlight.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/hudsonbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/hudsonbackground.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/hudsonmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/hudsonmap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/inkwellmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/inkwellmap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/kelvinmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/kelvinmap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/line_layer_c.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/line_layer_c.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/lomomap_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/lomomap_new.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/lookup_amatorka_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/lookup_amatorka_02.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/lookup_highkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/lookup_highkey.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/n1977blowout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/n1977blowout.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/n1977map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/n1977map.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/nashvillemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/nashvillemap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/overlaymap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/overlaymap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/pixar_curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/pixar_curves.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/rise_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/rise_mask1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/rise_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/rise_mask2.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/risemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/risemap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/sierramap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/sierramap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/sierravignette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/sierravignette.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/softlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/softlight.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/sutrocurves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/sutrocurves.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/sutroedgeburn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/sutroedgeburn.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/sutrometal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/sutrometal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toastercolorshift.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toastercolorshift.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toastercurves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toastercurves.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toastermetal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toastermetal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toasteroverlaymapwarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toasteroverlaymapwarm.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toastersoftlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toastersoftlight.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toy_mask1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toy_mask1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toy_mask2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toy_mask2.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/toy_mask3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/toy_mask3.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/valenciagradientmap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/valenciagradientmap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/valenciamap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/valenciamap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/vignette_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/vignette_map.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/vignettemap_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/vignettemap_new.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/walden_map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/walden_map.png
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/warm_layer1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/warm_layer1.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/assets/filter/xpromap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/assets/filter/xpromap.png
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/filter/advanced/MagicCrayonFilter.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.yinge.opengl.camera.R;
6 | import com.yinge.opengl.camera.filter.base.gpuimage.GPUImageFilter;
7 | import com.yinge.opengl.camera.util.OpenGlUtils;
8 |
9 | public class MagicCrayonFilter extends GPUImageFilter{
10 |
11 | private int mSingleStepOffsetLocation;
12 | //1.0 - 5.0
13 | private int mStrengthLocation;
14 |
15 | public MagicCrayonFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.crayon));
17 | }
18 |
19 | protected void onInit() {
20 | super.onInit();
21 | mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset");
22 | mStrengthLocation = GLES20.glGetUniformLocation(getProgram(), "strength");
23 | setFloat(mStrengthLocation, 2.0f);
24 | }
25 |
26 | protected void onDestroy() {
27 | super.onDestroy();
28 | }
29 |
30 | protected void onInitialized(){
31 | super.onInitialized();
32 | setFloat(mStrengthLocation, 0.5f);
33 | }
34 |
35 | private void setTexelSize(final float w, final float h) {
36 | setFloatVec2(mSingleStepOffsetLocation, new float[] {1.0f / w, 1.0f / h});
37 | }
38 |
39 | @Override
40 | public void onInputSizeChanged(final int width, final int height) {
41 | super.onInputSizeChanged(width, height);
42 | setTexelSize(width, height);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/filter/advanced/MagicFairytaleFilter.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter.advanced;
2 |
3 |
4 | public class MagicFairytaleFilter extends MagicLookupFilter {
5 |
6 | public MagicFairytaleFilter() {
7 | super("filter/fairy_tale.png");
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/filter/advanced/MagicSketchFilter.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter.advanced;
2 |
3 | import android.opengl.GLES20;
4 |
5 | import com.yinge.opengl.camera.R;
6 | import com.yinge.opengl.camera.filter.base.gpuimage.GPUImageFilter;
7 | import com.yinge.opengl.camera.util.OpenGlUtils;
8 |
9 | public class MagicSketchFilter extends GPUImageFilter{
10 |
11 | private int mSingleStepOffsetLocation;
12 | //0.0 - 1.0
13 | private int mStrengthLocation;
14 |
15 | public MagicSketchFilter(){
16 | super(NO_FILTER_VERTEX_SHADER, OpenGlUtils.readShaderFromRawResource(R.raw.sketch));
17 | }
18 |
19 | protected void onInit() {
20 | super.onInit();
21 | mSingleStepOffsetLocation = GLES20.glGetUniformLocation(getProgram(), "singleStepOffset");
22 | mStrengthLocation = GLES20.glGetUniformLocation(getProgram(), "strength");
23 | }
24 |
25 | protected void onDestroy() {
26 | super.onDestroy();
27 | }
28 |
29 | private void setTexelSize(final float w, final float h) {
30 | setFloatVec2(mSingleStepOffsetLocation, new float[] {1.0f / w, 1.0f / h});
31 | }
32 |
33 | protected void onInitialized(){
34 | super.onInitialized();
35 | setFloat(mStrengthLocation, 0.5f);
36 | }
37 |
38 | @Override
39 | public void onInputSizeChanged(final int width, final int height) {
40 | super.onInputSizeChanged(width, height);
41 | setTexelSize(width, height);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/filter/helper/FilterType.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter.helper;
2 |
3 | /**
4 | * 着色器类型
5 | */
6 | public enum FilterType {
7 | NONE,
8 | FAIRYTALE,
9 | SUNRISE,
10 | SUNSET,
11 | WHITECAT,
12 | BLACKCAT,
13 | SKINWHITEN,
14 | HEALTHY,
15 | SWEETS,
16 | ROMANCE,
17 | SAKURA,
18 | WARM,
19 | ANTIQUE,
20 | NOSTALGIA,
21 | CALM,
22 | LATTE,
23 | TENDER,
24 | COOL,
25 | EMERALD,
26 | EVERGREEN,
27 | CRAYON,
28 | SKETCH,
29 | AMARO,
30 | BRANNAN,
31 | BROOKLYN,
32 | EARLYBIRD,
33 | FREUD,
34 | HEFE,
35 | HUDSON,
36 | INKWELL,
37 | KEVIN,
38 | LOMO,
39 | N1977,
40 | NASHVILLE,
41 | PIXAR,
42 | RISE,
43 | SIERRA,
44 | SUTRO,
45 | TOASTER2,
46 | VALENCIA,
47 | WALDEN,
48 | XPROII,
49 | //image adjust
50 | CONTRAST,
51 | BRIGHTNESS,
52 | EXPOSURE,
53 | HUE,
54 | SATURATION,
55 | SHARPEN,
56 | IMAGE_ADJUST
57 | }
58 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/filter/helper/GPUPower.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.filter.helper;
2 |
3 | import javax.microedition.khronos.opengles.GL10;
4 |
5 | public class GPUPower {
6 |
7 | public static int mGPUPower = 1;
8 |
9 | public static void initGPUPower(GL10 gl){
10 | mGPUPower = getGPUPower(gl.glGetString(GL10.GL_RENDERER));
11 | }
12 |
13 | /**
14 | *
15 | * @param gpu gpu's name
16 | * GPU Performance Ranking:
17 | * Adreno 430
18 | * Adreno 420
19 | * Adreno 420
20 | * Mali-T628 MP6
21 | * Mali-T760 MP4
22 | * Mali-T628 MP4
23 | * Adreno 320
24 | * Mali-T624 MP4
25 | * PowerVR GC6200
26 | * PowerVR SGX544 MP3
27 | * Mali-T760 MP2
28 | * Adreno 405
29 | * Adreno 306
30 | * Mali-450
31 | * Mali-400
32 | *
33 | * Examples:
34 | * Huawei Mate8:Mali-T880 3000RMB+
35 | * Huawei Mate7:Mali-T628 MP4 2000RMB+
36 | * Huawei 5X Adreno 405 1000RMB+
37 | * @return
38 | */
39 | private static int getGPUPower(String gpu){
40 | //for Mali GPU
41 | if(gpu.contains("Mali-T880"))
42 | return 1;
43 | else if(gpu.contains("Mali-T760"))
44 | return 1;
45 | else if(gpu.contains("Mali-T628"))
46 | return 1;
47 | else if(gpu.contains("Mali-T624"))
48 | return 1;
49 | else if(gpu.contains("Mali"))
50 | return 0;
51 |
52 | //for PowerVR
53 | if(gpu.contains("PowerVR SGX 544"))
54 | return 0;
55 | else if(gpu.contains("PowerVR"))
56 | return 1;
57 |
58 | if(gpu.contains("Exynos 8"))
59 | return 2;
60 | else if(gpu.contains("Exynos 7"))
61 | return 1;
62 | else if(gpu.contains("Exynos"))
63 | return 0;
64 |
65 | if(gpu.contains("Adreno 330"))
66 | return 1;
67 | else if(gpu.contains("Adreno 510"))
68 | return 1;
69 | else if(gpu.contains("Adreno 320"))
70 | return 1;
71 | else if(gpu.contains("Adreno 306"))
72 | return 0;
73 | else if(gpu.contains("Adreno 405"))
74 | return 0;
75 | return 1;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/image/ImageBeautyUtil.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.image;
2 |
3 | import android.graphics.Bitmap;
4 |
5 | import java.nio.ByteBuffer;
6 |
7 | /**
8 | * 功能:
9 | *
10 | * Copyright corp.xxx.com 2018 All right reserved
11 | *
12 | * @author tuke 时间 2019/7/29
13 | * @email tuke@corp.xxx.com
14 | *
15 | * 最后修改人:无
16 | *
17 | */
18 | public class ImageBeautyUtil {
19 | static {
20 | System.loadLibrary("ImageBeauty");
21 | }
22 |
23 |
24 |
25 | private native void native_storeBitmap(Bitmap bitmap);
26 | private native void native_freeBitmap(ByteBuffer buffer);
27 | private native Bitmap native_getBitmap(ByteBuffer buffer);
28 |
29 | private native void native_initBeauty(ByteBuffer buffer);
30 | private native void native_freeBeauty();
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/image/frags/ImageAddsFragment.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.image.frags;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.content.DialogInterface;
6 | import android.os.Bundle;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 |
11 | import com.yinge.opengl.camera.R;
12 |
13 |
14 | @SuppressLint("ValidFragment")
15 | public class ImageAddsFragment extends BaseEditFragment{
16 |
17 | public ImageAddsFragment(Context context) {
18 | super(context);
19 | }
20 |
21 | @Override
22 | protected boolean isChanged() {
23 | return false;
24 | }
25 |
26 | @Override
27 | protected void onDialogButtonClick(DialogInterface dialog) {
28 |
29 | }
30 |
31 | @Override
32 | public View onCreateView(LayoutInflater inflater,
33 | ViewGroup container,
34 | Bundle savedInstanceState) {
35 | return super.onCreateView(inflater, container, savedInstanceState);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/image/frags/ImageFrameFragment.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.image.frags;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.content.Context;
5 | import android.content.DialogInterface;
6 |
7 |
8 | @SuppressLint("ValidFragment")
9 | public class ImageFrameFragment extends BaseEditFragment{
10 |
11 | public ImageFrameFragment(Context context) {
12 | super(context);
13 |
14 | }
15 |
16 | @Override
17 | protected boolean isChanged() {
18 | return false;
19 | }
20 |
21 | @Override
22 | protected void onDialogButtonClick(DialogInterface dialog) {
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/util/ImageUtil.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.util;
2 |
3 | import android.graphics.Bitmap;
4 | import android.graphics.Matrix;
5 | import android.util.Log;
6 |
7 | /**
8 | * 功能:
9 | *
10 | * Copyright corp.xxx.com 2018 All right reserved
11 | *
12 | * @author tuke 时间 2019/7/26
13 | * @email tuke@corp.xxx.com
14 | *
15 | * 最后修改人:无
16 | *
17 | */
18 | public class ImageUtil {
19 |
20 | private static final String TAG = "ImageUtil";
21 |
22 | /**
23 | * @param source
24 | * @param degree
25 | * @param flipHorizontal
26 | * @param recycle
27 | * @return
28 | */
29 | public static Bitmap rotateBitmap(Bitmap source, int degree, boolean flipHorizontal, boolean recycle) {
30 | // if (degree == 0 && !flipHorizontal) {
31 | // return source;
32 | // }
33 | Matrix matrix = new Matrix();
34 | matrix.postRotate(degree);
35 | if (flipHorizontal) {
36 | matrix.postScale(-1, 1);
37 | }
38 | Log.d(TAG, "source width: " + source.getWidth() + ", height: " + source.getHeight());
39 | Log.d(TAG, "rotateBitmap: degree: " + degree);
40 | Bitmap rotateBitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, false);
41 | Log.d(TAG, "rotate width: " + rotateBitmap.getWidth() + ", height: " + rotateBitmap.getHeight());
42 | if (recycle) {
43 | source.recycle();
44 | }
45 | return rotateBitmap;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/util/OpenGlCameraSdk.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera.util;
2 |
3 | import android.content.Context;
4 |
5 | /**
6 | * 功能:
7 | *
8 | * Copyright corp.xxx.com 2018 All right reserved
9 | *
10 | * @author tuke 时间 2019/7/16
11 | * @email tuke@xxx.com
12 | *
13 | * 最后修改人:无
14 | *
15 | */
16 | public class OpenGlCameraSdk {
17 |
18 | private Context mContext;
19 | private static OpenGlCameraSdk mOpenGlCameraSdk;
20 |
21 | private int mBeautyLevel = 5;
22 |
23 | public static OpenGlCameraSdk getInstance() {
24 | if (mOpenGlCameraSdk == null) {
25 | mOpenGlCameraSdk = new OpenGlCameraSdk();
26 | }
27 | return mOpenGlCameraSdk;
28 | }
29 |
30 | public void init(Context context) {
31 | this.mContext = context;
32 | }
33 |
34 | public Context getContext() {
35 | return mContext;
36 | }
37 |
38 | public int getBeautyLevel() {
39 | return mBeautyLevel;
40 | }
41 |
42 | public void setBeautyLevel(int beautyLevel) {
43 | this.mBeautyLevel = beautyLevel;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/openglcamera/src/main/java/com/yinge/opengl/camera/util/Rotation.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2012 CyberAgent
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package com.yinge.opengl.camera.util;
18 |
19 | public enum Rotation {
20 | NORMAL, ROTATION_90, ROTATION_180, ROTATION_270;
21 |
22 | /**
23 | * Retrieves the int representation of the Rotation.
24 | *
25 | * @return 0, 90, 180 or 270
26 | */
27 | public int asInt() {
28 | switch (this) {
29 | case NORMAL: return 0;
30 | case ROTATION_90: return 90;
31 | case ROTATION_180: return 180;
32 | case ROTATION_270: return 270;
33 | default: throw new IllegalStateException("Unknown Rotation!");
34 | }
35 | }
36 |
37 | /**
38 | * Create a Rotation from an integer. Needs to be either 0, 90, 180 or 270.
39 | *
40 | * @param rotation 0, 90, 180 or 270
41 | * @return Rotation object
42 | */
43 | public static Rotation fromInt(int rotation) {
44 | switch (rotation) {
45 | case 0: return NORMAL;
46 | case 90: return ROTATION_90;
47 | case 180: return ROTATION_180;
48 | case 270: return ROTATION_270;
49 | case 360: return NORMAL;
50 | default: throw new IllegalStateException(
51 | rotation + " is an unknown rotation. Needs to be either 0, 90, 180 or 270!");
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/openglcamera/src/main/jni/ImageBeauty.cpp:
--------------------------------------------------------------------------------
1 |
2 | #include "com_yinge_opengl_camera_image_ImageBeautyUtil.h"
3 |
4 | /*
5 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
6 | * Method: native_storeBitmap
7 | * Signature: (Landroid/graphics/Bitmap;)V
8 | */
9 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1storeBitmap
10 | (JNIEnv *, jobject, jobject){
11 |
12 |
13 | }
14 |
15 | /*
16 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
17 | * Method: native_freeBitmap
18 | * Signature: (Ljava/nio/ByteBuffer;)V
19 | */
20 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1freeBitmap
21 | (JNIEnv *, jobject, jobject){
22 |
23 |
24 | }
25 |
26 | /*
27 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
28 | * Method: native_getBitmap
29 | * Signature: (Ljava/nio/ByteBuffer;)Landroid/graphics/Bitmap;
30 | */
31 | JNIEXPORT jobject JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1getBitmap
32 | (JNIEnv *, jobject, jobject){
33 |
34 |
35 | }
36 |
37 | /*
38 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
39 | * Method: native_initBeauty
40 | * Signature: (Ljava/nio/ByteBuffer;)V
41 | */
42 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1initBeauty
43 | (JNIEnv *, jobject, jobject){
44 |
45 |
46 | }
47 |
48 | /*
49 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
50 | * Method: native_freeBeauty
51 | * Signature: ()V
52 | */
53 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1freeBeauty
54 | (JNIEnv *, jobject){
55 |
56 |
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/openglcamera/src/main/jni/bitmap/BitmapOperation.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by KE TU on 2019/7/30.
3 | //
4 | #ifndef _BITMAP_OPERATION_H_
5 | #define _BITMAP_OPERATION_H_
6 |
7 | #include
8 | #include "JniBitmap.h"
9 |
10 | class BitmapOperation {
11 |
12 | public:
13 | static int32_t convertArgbToInt(ARGB argb);
14 | static void convertIntToArgb(uint32_t pixel, ARGB* argb);
15 |
16 | static jobject native_storeBitmap(JNIEnv* jniEnv, jobject obj, jobject bitmap);
17 | static void native_freeBitmap(JNIEnv* jniEnv, jobject obj, jobject handle);
18 | static jobject native_getBitmap(JNIEnv* jniEnv, jobject obj, jobject handle);
19 | };
20 |
21 | #endif
--------------------------------------------------------------------------------
/openglcamera/src/main/jni/bitmap/JniBitmap.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by KE TU on 2019/7/30.
3 | //
4 |
5 | #ifndef ANDROIDOPENGLES_JNIBITMAP_H
6 | #define ANDROIDOPENGLES_JNIBITMAP_H
7 |
8 | #include
9 |
10 | // 单个pixel的值
11 | typedef struct {
12 |
13 | uint8_t alpha;
14 | uint8_t red;
15 | uint8_t green;
16 | uint8_t blue;
17 |
18 | } ARGB;
19 |
20 | class JniBitmap {
21 |
22 | public:
23 | // bitmap像素的地址
24 | uint32_t * _storedBitmapPixels;
25 | // bitmap的info
26 | AndroidBitmapInfo _bitmapInfo;
27 |
28 | JniBitmap() {
29 | _storedBitmapPixels = NULL;
30 | };
31 | };
32 |
33 | #endif //ANDROIDOPENGLES_JNIBITMAP_H
--------------------------------------------------------------------------------
/openglcamera/src/main/jni/com_yinge_opengl_camera_image_ImageBeautyUtil.h:
--------------------------------------------------------------------------------
1 | /* DO NOT EDIT THIS FILE - it is machine generated */
2 | #include
3 | /* Header for class com_yinge_opengl_camera_image_ImageBeautyUtil */
4 |
5 | #ifndef _Included_com_yinge_opengl_camera_image_ImageBeautyUtil
6 | #define _Included_com_yinge_opengl_camera_image_ImageBeautyUtil
7 | #ifdef __cplusplus
8 | extern "C" {
9 | #endif
10 | /*
11 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
12 | * Method: native_storeBitmap
13 | * Signature: (Landroid/graphics/Bitmap;)V
14 | */
15 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1storeBitmap
16 | (JNIEnv *, jobject, jobject);
17 |
18 | /*
19 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
20 | * Method: native_freeBitmap
21 | * Signature: (Ljava/nio/ByteBuffer;)V
22 | */
23 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1freeBitmap
24 | (JNIEnv *, jobject, jobject);
25 |
26 | /*
27 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
28 | * Method: native_getBitmap
29 | * Signature: (Ljava/nio/ByteBuffer;)Landroid/graphics/Bitmap;
30 | */
31 | JNIEXPORT jobject JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1getBitmap
32 | (JNIEnv *, jobject, jobject);
33 |
34 | /*
35 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
36 | * Method: native_initBeauty
37 | * Signature: (Ljava/nio/ByteBuffer;)V
38 | */
39 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1initBeauty
40 | (JNIEnv *, jobject, jobject);
41 |
42 | /*
43 | * Class: com_yinge_opengl_camera_image_ImageBeautyUtil
44 | * Method: native_freeBeauty
45 | * Signature: ()V
46 | */
47 | JNIEXPORT void JNICALL Java_com_yinge_opengl_camera_image_ImageBeautyUtil_native_1freeBeauty
48 | (JNIEnv *, jobject);
49 |
50 | #ifdef __cplusplus
51 | }
52 | #endif
53 | #endif
54 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_contrast_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_exposure_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_hdr_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_saturation_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_sharpness_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_adjust_vibrance_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_done.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_done_disenable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_done_disenable.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_bg_done_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_bg_done_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_color_hue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_color_hue.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/edit_color_hue_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/edit_color_hue_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_adds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_adds.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_adds_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_adds_blue.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_auto_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_auto_beauty.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_auto_beauty_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_auto_beauty_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_cosmesis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_cosmesis.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_cosmesis_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_cosmesis_blue.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_edit.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_edit_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_edit_blue.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_effect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_effect.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_effect_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_effect_blue.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_frame.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_frame.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_frame_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_frame_blue.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_skinprocess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_skinprocess.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/i_skinprocess_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/i_skinprocess_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_collage_layout_filters_bar_close_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_smallsize_thumb_light_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_light_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/ic_seekbar_thumb_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_click.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_click.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/mix_gallery_bottom_back_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/seekbar_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/seekbar_bg.9.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/seekbar_bg_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/seekbar_bg_light.9.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/seekbar_primary_progress.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/seekbar_primary_progress.9.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/seekbar_transparent_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/seekbar_transparent_bg.9.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xhdpi/tooltip_bg.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xhdpi/tooltip_bg.9.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_1977.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_1977.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_amoro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_amoro.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_antique.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_antique.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_beauty.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_blackcat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_blackcat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_brannan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_brannan.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_brooklyn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_brooklyn.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_calm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_calm.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_cool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_cool.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_crayon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_crayon.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_earlybird.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_earlybird.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_emerald.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_emerald.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_evergreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_evergreen.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_fairytale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_fairytale.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_freud.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_freud.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_healthy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_healthy.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_hefe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_hefe.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_hudson.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_hudson.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_inkwell.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_inkwell.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_kevin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_kevin.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_latte.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_latte.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_lomo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_lomo.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_nashville.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_nashville.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_nostalgia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_nostalgia.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_original.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_piaxr.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_piaxr.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_rise.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_rise.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_romance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_romance.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sakura.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sakura.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sierra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sierra.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sketch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sketch.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sunrise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sunrise.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sunset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sunset.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sutro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sutro.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sweets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_sweets.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_tender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_tender.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_toastero.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_toastero.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_valencia.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_valencia.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_walden.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_walden.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_warm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_warm.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_whitecat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_whitecat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_xpro.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/filter_thumb_xpro.jpg
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/ic_camera_beauty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/ic_camera_beauty.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/ic_camera_beauty_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/ic_camera_beauty_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/ic_camera_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/ic_camera_filter.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_camera_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_camera_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_camera_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_camera_press.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_close_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_close_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_close_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_close_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_take_picture_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_take_picture_normal.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_take_picture_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_take_picture_pressed.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/icon_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/icon_video.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_confirm_btn_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_confirm_btn_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer00_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer00_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer01_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_btn01_layer01_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_btn02_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_btn02_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_icon01_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_icon01_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_icon02_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_favorite_icon02_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable-xxhdpi/take_filter_random_btn_skin_flat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/openglcamera/src/main/res/drawable-xxhdpi/take_filter_random_btn_skin_flat.png
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/bg_down_arrow_close.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/btn_camera_beauty.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/btn_camera_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/btn_camera_shutter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/btn_layout_filters_bar_close.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/click_button_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/seekbar_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 | -
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/seekbar_progress_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 | -
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/seekbar_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/seekbar_thumb_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_filter_favorite_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_filter_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_adds.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_beauty.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_bright.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_contrast.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_exposure.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_hue.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_saturation.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_sharpness.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_adjust_vibrance.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_edit_yellow.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_fragment_skin.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_frame.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_image_save.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/selector_switch_camera.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/drawable/take_filter_favorite_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/layout/camera_filter_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
18 |
19 |
23 |
24 |
25 |
33 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/layout/fragment_image_edit_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
17 |
18 |
22 |
23 |
24 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/amaro.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
29 |
30 | gl_FragColor = mapped;
31 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/camera_input_vertex.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 position;
2 | attribute vec4 inputTextureCoordinate;
3 |
4 | // 纹理变换矩阵
5 | uniform mat4 textureTransform;
6 | // 传递给 片元着色器 纹理坐标
7 | varying vec2 textureCoordinate;
8 |
9 | void main()
10 | {
11 | textureCoordinate = (textureTransform * inputTextureCoordinate).xy;
12 | gl_Position = position;
13 | }
14 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/cool.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision highp float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D curve;
6 |
7 | void main()
8 | {
9 | lowp vec4 textureColor;
10 | lowp vec4 textureColorOri;
11 |
12 | float xCoordinate = textureCoordinate.x;
13 | float yCoordinate = textureCoordinate.y;
14 |
15 | highp float redCurveValue;
16 | highp float greenCurveValue;
17 | highp float blueCurveValue;
18 |
19 | textureColor = texture2D( inputImageTexture, vec2(xCoordinate, yCoordinate));
20 | textureColorOri = textureColor;
21 | // step1 curve
22 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).r;
23 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).g;
24 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).b;
25 | // step2 level
26 | redCurveValue = texture2D(curve, vec2(redCurveValue, 0.0)).a;
27 | greenCurveValue = texture2D(curve, vec2(greenCurveValue, 0.0)).a;
28 | blueCurveValue = texture2D(curve, vec2(blueCurveValue, 0.0)).a;
29 | // step3 brightness/constrast adjust
30 | redCurveValue = redCurveValue * 1.25 - 0.12549;
31 | greenCurveValue = greenCurveValue * 1.25 - 0.12549;
32 | blueCurveValue = blueCurveValue * 1.25 - 0.12549;
33 | //redCurveValue = (((redCurveValue) > (1.0)) ? (1.0) : (((redCurveValue) < (0.0)) ? (0.0) : (redCurveValue)));
34 | //greenCurveValue = (((greenCurveValue) > (1.0)) ? (1.0) : (((greenCurveValue) < (0.0)) ? (0.0) : (greenCurveValue)));
35 | //blueCurveValue = (((blueCurveValue) > (1.0)) ? (1.0) : (((blueCurveValue) < (0.0)) ? (0.0) : (blueCurveValue)));
36 | // step4 normal blending with original
37 | textureColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
38 | textureColor = (textureColorOri - textureColor) * 0.549 + textureColor;
39 |
40 | gl_FragColor = vec4(textureColor.r, textureColor.g, textureColor.b, 1.0);
41 | }
42 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/crayon.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision mediump float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform vec2 singleStepOffset;
6 | uniform float strength;
7 |
8 | const highp vec3 W = vec3(0.299,0.587,0.114);
9 |
10 | const mat3 rgb2yiqMatrix = mat3(
11 | 0.299, 0.587, 0.114,
12 | 0.596,-0.275,-0.321,
13 | 0.212,-0.523, 0.311);
14 |
15 | const mat3 yiq2rgbMatrix = mat3(
16 | 1.0, 0.956, 0.621,
17 | 1.0,-0.272,-1.703,
18 | 1.0,-1.106, 0.0);
19 |
20 |
21 | void main()
22 | {
23 | vec4 oralColor = texture2D(inputImageTexture, textureCoordinate);
24 |
25 | vec3 maxValue = vec3(0.,0.,0.);
26 |
27 | for(int i = -2; i<=2; i++)
28 | {
29 | for(int j = -2; j<=2; j++)
30 | {
31 | vec4 tempColor = texture2D(inputImageTexture, textureCoordinate+singleStepOffset*vec2(i,j));
32 | maxValue.r = max(maxValue.r,tempColor.r);
33 | maxValue.g = max(maxValue.g,tempColor.g);
34 | maxValue.b = max(maxValue.b,tempColor.b);
35 | }
36 | }
37 |
38 | vec3 textureColor = oralColor.rgb / maxValue;
39 |
40 | float gray = dot(textureColor, W);
41 | float k = 0.223529;
42 | float alpha = min(gray,k)/k;
43 |
44 | textureColor = textureColor * alpha + (1.-alpha)*oralColor.rgb;
45 |
46 | vec3 yiqColor = textureColor * rgb2yiqMatrix;
47 |
48 | yiqColor.r = max(0.0,min(1.0,pow(gray,strength)));
49 |
50 | textureColor = yiqColor * yiq2rgbMatrix;
51 |
52 | gl_FragColor = vec4(textureColor, oralColor.w);
53 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/default_vertex.glsl:
--------------------------------------------------------------------------------
1 | attribute vec4 position;
2 | attribute vec4 inputTextureCoordinate;
3 |
4 | uniform mat4 textureTransform;
5 | varying vec2 textureCoordinate;
6 |
7 | void main()
8 | {
9 | textureCoordinate = (textureTransform * inputTextureCoordinate).xy;
10 | gl_Position = position;
11 | }
12 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/hefe.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //edgeBurn
7 | uniform sampler2D inputImageTexture3; //hefeMap
8 | uniform sampler2D inputImageTexture4; //hefeGradientMap
9 | uniform sampler2D inputImageTexture5; //hefeSoftLight
10 | uniform sampler2D inputImageTexture6; //hefeMetal
11 |
12 | uniform float strength;
13 |
14 | void main()
15 | {
16 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
17 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
18 | vec3 edge = texture2D(inputImageTexture2, textureCoordinate).rgb;
19 | texel = texel * edge;
20 |
21 | texel = vec3(
22 | texture2D(inputImageTexture3, vec2(texel.r, .16666)).r,
23 | texture2D(inputImageTexture3, vec2(texel.g, .5)).g,
24 | texture2D(inputImageTexture3, vec2(texel.b, .83333)).b);
25 |
26 | vec3 luma = vec3(.30, .59, .11);
27 | vec3 gradSample = texture2D(inputImageTexture4, vec2(dot(luma, texel), .5)).rgb;
28 | vec3 final = vec3(
29 | texture2D(inputImageTexture5, vec2(gradSample.r, texel.r)).r,
30 | texture2D(inputImageTexture5, vec2(gradSample.g, texel.g)).g,
31 | texture2D(inputImageTexture5, vec2(gradSample.b, texel.b)).b
32 | );
33 |
34 | vec3 metal = texture2D(inputImageTexture6, textureCoordinate).rgb;
35 | vec3 metaled = vec3(
36 | texture2D(inputImageTexture5, vec2(metal.r, texel.r)).r,
37 | texture2D(inputImageTexture5, vec2(metal.g, texel.g)).g,
38 | texture2D(inputImageTexture5, vec2(metal.b, texel.b)).b
39 | );
40 |
41 | metaled.rgb = mix(originColor.rgb, metaled.rgb, strength);
42 |
43 | gl_FragColor = vec4(metaled, 1.0);
44 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/hudson.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 |
16 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
17 |
18 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
19 |
20 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
21 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
22 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
23 |
24 | vec4 mapped;
25 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
26 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
27 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
28 | mapped.a = 1.0;
29 |
30 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
31 |
32 | gl_FragColor = mapped;
33 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/inkwell.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
11 | texel = vec3(dot(vec3(0.3, 0.6, 0.1), texel));
12 | texel = vec3(texture2D(inputImageTexture2, vec2(texel.r, .16666)).r);
13 | gl_FragColor = vec4(texel, 1.0);
14 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/kevin_new.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
11 |
12 | vec2 lookup;
13 | lookup.y = .5;
14 |
15 | lookup.x = texel.r;
16 | texel.r = texture2D(inputImageTexture2, lookup).r;
17 |
18 | lookup.x = texel.g;
19 | texel.g = texture2D(inputImageTexture2, lookup).g;
20 |
21 | lookup.x = texel.b;
22 | texel.b = texture2D(inputImageTexture2, lookup).b;
23 |
24 | gl_FragColor = vec4(texel, 1.0);
25 | }
26 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/lomo.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 | uniform sampler2D inputImageTexture3;
8 |
9 | uniform float strength;
10 |
11 | void main()
12 | {
13 | vec4 originColor = vec4(0.2,0.6,0.9,1.0);
14 |
15 | vec3 texel;
16 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
17 | float d = dot(tc, tc);
18 | vec2 lookup = vec2(d, originColor.r);
19 | texel.r = texture2D(inputImageTexture3, lookup).r;
20 | lookup.y = originColor.g;
21 | texel.g = texture2D(inputImageTexture3, lookup).g;
22 | lookup.y = originColor.b;
23 | texel.b = texture2D(inputImageTexture3, lookup).b;
24 |
25 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
26 |
27 | gl_FragColor = vec4(texel,1.0);
28 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/n1977.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 |
11 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
12 |
13 | texel = vec3(
14 | texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
15 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
16 | texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
17 |
18 | gl_FragColor = vec4(texel, 1.0);
19 | }
20 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/nashville.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2;
7 |
8 | void main()
9 | {
10 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
11 | texel = vec3(
12 | texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
13 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
14 | texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
15 | gl_FragColor = vec4(texel, 1.0);
16 | }
17 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/rise.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
29 |
30 | gl_FragColor = mapped;
31 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/romance.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision highp float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D curve;
6 |
7 | void main()
8 | {
9 | lowp vec4 textureColor;
10 | lowp vec4 textureColorRes;
11 | lowp vec4 textureColorOri;
12 | vec4 grey1Color;
13 | vec4 layerColor;
14 | mediump float satVal = 115.0 / 100.0;
15 |
16 | float xCoordinate = textureCoordinate.x;
17 | float yCoordinate = textureCoordinate.y;
18 |
19 | highp float redCurveValue;
20 | highp float greenCurveValue;
21 | highp float blueCurveValue;
22 |
23 | textureColor = texture2D( inputImageTexture, vec2(xCoordinate, yCoordinate));
24 | textureColorRes = textureColor;
25 | textureColorOri = textureColor;
26 |
27 | // step1. screen blending
28 | textureColor = 1.0 - ((1.0 - textureColorOri) * (1.0 - textureColorOri));
29 | textureColor = (textureColor - textureColorOri) + textureColorOri;
30 |
31 | // step2. curve
32 | redCurveValue = texture2D(curve, vec2(textureColor.r, 0.0)).r;
33 | greenCurveValue = texture2D(curve, vec2(textureColor.g, 0.0)).g;
34 | blueCurveValue = texture2D(curve, vec2(textureColor.b, 0.0)).b;
35 |
36 | // step3. saturation
37 | highp float G = (redCurveValue + greenCurveValue + blueCurveValue);
38 | G = G / 3.0;
39 |
40 | redCurveValue = ((1.0 - satVal) * G + satVal * redCurveValue);
41 | greenCurveValue = ((1.0 - satVal) * G + satVal * greenCurveValue);
42 | blueCurveValue = ((1.0 - satVal) * G + satVal * blueCurveValue);
43 |
44 | textureColor = vec4(redCurveValue, greenCurveValue, blueCurveValue, 1.0);
45 |
46 | gl_FragColor = vec4(textureColor.r, textureColor.g, textureColor.b, 1.0);
47 | }
48 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/sierra.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //blowout;
7 | uniform sampler2D inputImageTexture3; //overlay;
8 | uniform sampler2D inputImageTexture4; //map
9 |
10 | uniform float strength;
11 |
12 | void main()
13 | {
14 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
15 | vec4 texel = texture2D(inputImageTexture, textureCoordinate);
16 | vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;
17 |
18 | texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
19 | texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
20 | texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;
21 |
22 | vec4 mapped;
23 | mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
24 | mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
25 | mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
26 | mapped.a = 1.0;
27 |
28 | mapped.rgb = mix(originColor.rgb, mapped.rgb, strength);
29 | gl_FragColor = mapped;
30 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/sketch.glsl:
--------------------------------------------------------------------------------
1 | varying highp vec2 textureCoordinate;
2 | precision mediump float;
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform vec2 singleStepOffset;
6 | uniform float strength;
7 |
8 | const highp vec3 W = vec3(0.299,0.587,0.114);
9 |
10 |
11 | void main()
12 | {
13 | float threshold = 0.0;
14 | //pic1
15 | vec4 oralColor = texture2D(inputImageTexture, textureCoordinate);
16 |
17 | //pic2
18 | vec3 maxValue = vec3(0.,0.,0.);
19 |
20 | for(int i = -2; i<=2; i++)
21 | {
22 | for(int j = -2; j<=2; j++)
23 | {
24 | vec4 tempColor = texture2D(inputImageTexture, textureCoordinate+singleStepOffset*vec2(i,j));
25 | maxValue.r = max(maxValue.r,tempColor.r);
26 | maxValue.g = max(maxValue.g,tempColor.g);
27 | maxValue.b = max(maxValue.b,tempColor.b);
28 | threshold += dot(tempColor.rgb, W);
29 | }
30 | }
31 | //pic3
32 | float gray1 = dot(oralColor.rgb, W);
33 |
34 | //pic4
35 | float gray2 = dot(maxValue, W);
36 |
37 | //pic5
38 | float contour = gray1 / gray2;
39 |
40 | threshold = threshold / 25.;
41 | float alpha = max(1.0,gray1>threshold?1.0:(gray1/threshold));
42 |
43 | float result = contour * alpha + (1.0-alpha)*gray1;
44 |
45 | gl_FragColor = vec4(vec3(result,result,result), oralColor.w);
46 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/suger_tablets.glsl:
--------------------------------------------------------------------------------
1 | varying mediump vec2 textureCoordinate;
2 | varying mediump vec2 textureCoordinate2; // TODO: This is not used
3 |
4 | uniform sampler2D inputImageTexture;
5 | uniform sampler2D inputImageTexture2; // lookup texture
6 | uniform mediump float strength;
7 |
8 | void main()
9 | {
10 | mediump vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
11 | mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);
12 |
13 | mediump float blueColor = textureColor.b * 63.0;
14 |
15 | mediump vec2 quad1;
16 | quad1.y = floor(floor(blueColor) / 8.0);
17 | quad1.x = floor(blueColor) - (quad1.y * 8.0);
18 |
19 | mediump vec2 quad2;
20 | quad2.y = floor(ceil(blueColor) / 8.0);
21 | quad2.x = ceil(blueColor) - (quad2.y * 8.0);
22 |
23 | mediump vec2 texPos1;
24 | texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
25 | texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
26 |
27 | mediump vec2 texPos2;
28 | texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);
29 | texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);
30 |
31 | mediump vec4 newColor1 = texture2D(inputImageTexture2, texPos1);
32 | mediump vec4 newColor2 = texture2D(inputImageTexture2, texPos2);
33 |
34 | mediump vec4 newColor = mix(newColor1, newColor2, fract(blueColor));
35 |
36 | newColor.rgb = mix(originColor.rgb, newColor.rgb, strength);
37 |
38 | gl_FragColor = vec4(newColor.rgb, textureColor.w);
39 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/sutro.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //sutroMap;
7 | uniform sampler2D inputImageTexture3; //sutroMetal;
8 | uniform sampler2D inputImageTexture4; //softLight
9 | uniform sampler2D inputImageTexture5; //sutroEdgeburn
10 | uniform sampler2D inputImageTexture6; //sutroCurves
11 |
12 | uniform float strength;
13 |
14 | void main()
15 | {
16 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
17 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
18 |
19 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
20 | float d = dot(tc, tc);
21 | vec2 lookup = vec2(d, texel.r);
22 | texel.r = texture2D(inputImageTexture2, lookup).r;
23 | lookup.y = texel.g;
24 | texel.g = texture2D(inputImageTexture2, lookup).g;
25 | lookup.y = texel.b;
26 | texel.b = texture2D(inputImageTexture2, lookup).b;
27 |
28 | vec3 rgbPrime = vec3(0.1019, 0.0, 0.0);
29 | float m = dot(vec3(.3, .59, .11), texel.rgb) - 0.03058;
30 | texel = mix(texel, rgbPrime + m, 0.32);
31 |
32 | vec3 metal = texture2D(inputImageTexture3, textureCoordinate).rgb;
33 | texel.r = texture2D(inputImageTexture4, vec2(metal.r, texel.r)).r;
34 | texel.g = texture2D(inputImageTexture4, vec2(metal.g, texel.g)).g;
35 | texel.b = texture2D(inputImageTexture4, vec2(metal.b, texel.b)).b;
36 |
37 | texel = texel * texture2D(inputImageTexture5, textureCoordinate).rgb;
38 |
39 | texel.r = texture2D(inputImageTexture6, vec2(texel.r, .16666)).r;
40 | texel.g = texture2D(inputImageTexture6, vec2(texel.g, .5)).g;
41 | texel.b = texture2D(inputImageTexture6, vec2(texel.b, .83333)).b;
42 |
43 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
44 |
45 | gl_FragColor = vec4(texel, 1.0);
46 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/valencia.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //map
7 | uniform sampler2D inputImageTexture3; //gradMap
8 |
9 | mat3 saturateMatrix = mat3(
10 | 1.1402,
11 | -0.0598,
12 | -0.061,
13 | -0.1174,
14 | 1.0826,
15 | -0.1186,
16 | -0.0228,
17 | -0.0228,
18 | 1.1772);
19 |
20 | vec3 lumaCoeffs = vec3(.3, .59, .11);
21 |
22 | uniform float strength;
23 |
24 | void main()
25 | {
26 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
27 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
28 |
29 | texel = vec3(
30 | texture2D(inputImageTexture2, vec2(texel.r, .1666666)).r,
31 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
32 | texture2D(inputImageTexture2, vec2(texel.b, .8333333)).b
33 | );
34 |
35 | texel = saturateMatrix * texel;
36 | float luma = dot(lumaCoeffs, texel);
37 | texel = vec3(
38 | texture2D(inputImageTexture3, vec2(luma, texel.r)).r,
39 | texture2D(inputImageTexture3, vec2(luma, texel.g)).g,
40 | texture2D(inputImageTexture3, vec2(luma, texel.b)).b);
41 |
42 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
43 | gl_FragColor = vec4(texel, 1.0);
44 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/walden.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //map
7 | uniform sampler2D inputImageTexture3; //vigMap
8 |
9 | uniform float strength;
10 |
11 | void main()
12 | {
13 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 |
16 | texel = vec3(
17 | texture2D(inputImageTexture2, vec2(texel.r, .16666)).r,
18 | texture2D(inputImageTexture2, vec2(texel.g, .5)).g,
19 | texture2D(inputImageTexture2, vec2(texel.b, .83333)).b);
20 |
21 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
22 | float d = dot(tc, tc);
23 | vec2 lookup = vec2(d, texel.r);
24 | texel.r = texture2D(inputImageTexture3, lookup).r;
25 | lookup.y = texel.g;
26 | texel.g = texture2D(inputImageTexture3, lookup).g;
27 | lookup.y = texel.b;
28 | texel.b = texture2D(inputImageTexture3, lookup).b;
29 |
30 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
31 |
32 | gl_FragColor = vec4(texel, 1.0);
33 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/raw/xproii_filter_shader.glsl:
--------------------------------------------------------------------------------
1 | precision mediump float;
2 |
3 | varying mediump vec2 textureCoordinate;
4 |
5 | uniform sampler2D inputImageTexture;
6 | uniform sampler2D inputImageTexture2; //map
7 | uniform sampler2D inputImageTexture3; //vigMap
8 |
9 | uniform float strength;
10 |
11 | void main()
12 | {
13 | vec4 originColor = texture2D(inputImageTexture, textureCoordinate);
14 | vec3 texel = texture2D(inputImageTexture, textureCoordinate).rgb;
15 |
16 | vec2 tc = (2.0 * textureCoordinate) - 1.0;
17 | float d = dot(tc, tc);
18 | vec2 lookup = vec2(d, texel.r);
19 | texel.r = texture2D(inputImageTexture3, lookup).r;
20 | lookup.y = texel.g;
21 | texel.g = texture2D(inputImageTexture3, lookup).g;
22 | lookup.y = texel.b;
23 | texel.b = texture2D(inputImageTexture3, lookup).b;
24 |
25 | vec2 red = vec2(texel.r, 0.16666);
26 | vec2 green = vec2(texel.g, 0.5);
27 | vec2 blue = vec2(texel.b, .83333);
28 | texel.r = texture2D(inputImageTexture2, red).r;
29 | texel.g = texture2D(inputImageTexture2, green).g;
30 | texel.b = texture2D(inputImageTexture2, blue).b;
31 |
32 | texel.rgb = mix(originColor.rgb, texel.rgb, strength);
33 |
34 | gl_FragColor = vec4(texel, 1.0);
35 |
36 | }
--------------------------------------------------------------------------------
/openglcamera/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #ff5cbadc
5 | #3d5afe
6 | #1e3250
7 | #ff6666
8 | #b93221
9 | #fe9833
10 | #cc99cc
11 | #c4c4c4
12 | #c8ca34
13 | #568f35
14 | #e69138
15 | #c8ca34
16 | #ff9933
17 |
18 |
--------------------------------------------------------------------------------
/openglcamera/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 3.0dip
3 | 6.0dip
4 | 60.0dip
5 | 12.0px
6 | 220.0dip
7 | 2.0px
8 | 34.0dip
9 | 34.0dip
10 | 8.0px
11 | 2.0px
12 | 24.0px
13 |
14 |
--------------------------------------------------------------------------------
/openglcamera/src/test/java/com/yinge/opengl/camera/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.yinge.opengl.camera;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/screenshot/Camera+GLSufaceView.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/Camera+GLSufaceView.png
--------------------------------------------------------------------------------
/screenshot/EGL渲染.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/EGL渲染.png
--------------------------------------------------------------------------------
/screenshot/fbo使用.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/fbo使用.png
--------------------------------------------------------------------------------
/screenshot/代码结构1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/代码结构1.jpg
--------------------------------------------------------------------------------
/screenshot/代码结构2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/代码结构2.jpg
--------------------------------------------------------------------------------
/screenshot/图形变换.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/图形变换.png
--------------------------------------------------------------------------------
/screenshot/图片处理.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/图片处理.png
--------------------------------------------------------------------------------
/screenshot/滤镜相机.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/滤镜相机.png
--------------------------------------------------------------------------------
/screenshot/相机DEMO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/相机DEMO.png
--------------------------------------------------------------------------------
/screenshot/绘制形体.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/绘制形体.png
--------------------------------------------------------------------------------
/screenshot/美颜相机.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/美颜相机.png
--------------------------------------------------------------------------------
/screenshot/首页.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tuke0919/AndroidOpenGLES/7b7573f534de51a1d167bbb9727caa4611e3285d/screenshot/首页.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':openglcamera'
2 |
--------------------------------------------------------------------------------