华为手机重新设置代码 :Android App开发超实用实例 | OpenGL在Android手机上创建自定义的暗纹滤镜

太平洋在线下载手机版 89 0

华为手机重新设置代码
:Android App开发超实用实例 | OpenGL在Android手机上创建自定义的暗纹滤镜-第1张图片-太平洋在线下载

OpenGL(Open Graphics Library)是xg111net太平洋在线用于渲染2D、3D矢量图形的太平洋xg111跨语言、跨平台的应用程序编程接口(API),它由数百个不同的函数调用组成,用来呈现复杂的三维景象华为手机重新设置代码 。下面这个实例演示了使用OpenGL在Android手机上创建自定义的暗纹滤镜。

01

实例功能

此实例主要通过使用GLSurfaceView控件加载自定义OpenGL渲染器Renderer,并在该Renderer中使用glShaderSource方法,根据生成暗纹(将原始像素逐个分解为彩色圆点,然后进行灰度处理)的原生代码设置着色器的源代码,创建自定义的暗纹滤镜华为手机重新设置代码 。当实例运行之后,单击“显示原始图像”按钮,原始图像的效果如图1(a)所示。单击“使用暗纹滤镜”按钮,图像在使用自定义的暗纹滤镜处理之后的效果如图1(b)所示。

华为手机重新设置代码
:Android App开发超实用实例 | OpenGL在Android手机上创建自定义的暗纹滤镜-第2张图片-太平洋在线下载

■ 图1

02

展开全文

实现代码

publicvoidonClickButton1(View v){ //响应单击按钮“显示原始图像”

String myFragmentShaderString=

"varying mediump vec2 textureCoordinate;"+

"uniform sampler2D textureSampler;"+

"void main{gl_FragColor=texture2D(textureSampler,"+

"textureCoordinate);}"; //片元着色器代码

//将片元着色器代码传入渲染器

myRenderer.setFragmentShaderString(myFragmentShaderString);

myGLSurfaceView.requestRender; //请求重新绘制图像

publicvoidonClickButton2(View v){ //响应单击按钮“使用暗纹滤镜”

//在片元着色器代码中根据算法将原始像素逐个分解为

//彩色圆点华为手机重新设置代码 ,然后进行灰度处理,从而实现暗纹效果

String myFragmentShaderString = "precision highp float;"+

"varying mediump vec2 textureCoordinate;"+

"uniform sampler2D textureSampler;"+

"void main{"+

" float myPixelSize=0.01;"+

" float myRatio=1533.0/1080.0;"+

" vec2 myXY=textureCoordinate;"+

" vec3 myGrayScaleFactor=vec3(0.2125,0.7154,0.0721);"+

" vec2 mySampleFactor=vec2(myPixelSize,myPixelSize/myRatio);"+

" vec2 mySampleXY=myXY-mod(myXY,"+

" mySampleFactor)+0.5*mySampleFactor;"+

" vec2 myNewXY=vec2(myXY.x,myXY.y*myRatio+0.5-0.5*myRatio);"+

" float myNewSampleY=mySampleXY.y*myRatio+0.5-0.5* myRatio;"+

" vec2 myNewSampleXY=vec2(mySampleXY.x,myNewSampleY);"+

" float myDistance=distance(myNewSampleXY,myNewXY);"+

" vec3 mySampleColor="+

" texture2D(textureSampler,mySampleXY).rgb;"+

" float myDotColor=1.0-dot(mySampleColor,myGrayScaleFactor);"+

" gl_FragColor.rgb=vec3(1.0-step(myDistance,"+

" myPixelSize*0.5*myDotColor));"+

//将片元着色器代码传入渲染器

myRenderer.setFragmentShaderString(myFragmentShaderString);

myGLSurfaceView.requestRender; //请求重新绘制图像

03

代码说明

上面这段代码在MyCode\MySampleO94\app\src\main\java\com\bin\luo\mysample\ MainActivity.java文件中华为手机重新设置代码 。此实例的完整代码在MyCode\MySampleO94文件夹中。

04

补充说明

在测试代码时,必须保持网络畅通华为手机重新设置代码

05

源代码下载

关注微信公众号,后台回复关键词 “Android App开发超实用代码166” 即可获得完整源代码华为手机重新设置代码

06

参考书籍

扫码优惠购书

《Android App开发超实用代码集锦——jQuery Mobile+OpenCV+O》

作者:罗帅、罗斌

定价:99元

问题描述+解决方案+真实源码+效果截图

介绍jQuery Mobile、OpenCV、OpenGL等在Android平台运行的应用

300个实例华为手机重新设置代码 ,提供完整源代码,边看边做边学

标签: 滤镜 Android 机上 实例 定义

抱歉,评论功能暂时关闭!