自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (2)
  • 收藏
  • 关注

原创 android-opengles3.0开发-6-坐标系&正交投影

项目地址简介在之前的文章中,绘制了一些图形,但是有个问题, 以三角形为例,根据设置的坐标,应该显示正三角形,而手机上运行确被拉长为等边三角形(底边比左右两边短)。如果手机横向防止,三角形就被压扁了。了解两个坐标系之后,这个问题的原因就清楚了。归一化设备坐标系、屏幕坐标系、虚拟坐标系opengl 的坐标系是归一化设备坐标系,原点在屏幕中心,横向是横坐标,纵向是纵坐标,范围都是[-1,1]...

2019-12-30 16:55:50 371

原创 android-opengles3.0开发-5-绘制纹理

项目地址简介本文在上一篇文章的基础上完成纹理的绘制。绘制纹理流程也不复杂:一张作为纹理的图片编写相应的着色器准备图形和纹理的坐标将图片转换成纹理将纹理绑定到着色器指定属性的位置绘制图形和纹理编写着色器顶点着色器a_Position:图形定点坐标a_texCoord:对应的纹理坐标,其他位置的坐标 opengles 通过插值进行计算v_texCoord:输出到到片段...

2019-12-30 16:55:33 487

原创 android-opengles3.0开发-4-使用EGL

项目地址简介前面几篇文章通过 GLSurfaceView 进行 opengles 的渲染,使用简单。但是不够灵活,一个 opengl 只能渲染一个 GLSurfaceView,一旦 GLSurfaceView 销毁,对应的 opengl 也会销毁。使用 EGL 可以避免上述缺点。EGL 时渲染 API 和平台原生窗口系统之间的接口,主要任务是:查询并初始化设备的可用显示器。创建渲染表...

2019-12-30 16:55:18 705 1

原创 android-opengles3.0开发-3-添加颜色

项目地址opengles 的给图形添加颜色很简单,在上篇文章的基础上改动几处即可。1. 修改着色器顶点着色器需要声明一个接收颜色数据的输入变量 aColor ,以及一个输出变量 vColor ,并在 main() 方法中,将 aColor 赋值给 vColor,用以后续将颜色输出到片段着色器。 private static final String vertextShaderSour...

2019-12-30 16:55:13 358

原创 android-opengles3.0开发-2-绘制图形

项目地址简介android 下 opengles 的绘制图形简单来说步骤如下:定义图形顶点数据编写/编译 顶点着色器 和 片段着色器。创建程序,将着色器绑定到程序上,然后连接程序。如果着色器中没有定义属性的位置,则在绑定着色器之后、连接程序之前,将属性名称和位置进行绑定。使用程序,将图形顶点数据放到相应的属性位置上,然后进行绘制。定义图形顶点数据浮点型数组,顶点的顺序按逆时针排...

2019-12-30 16:55:01 403

原创 android-opengles3.0开发-1-基本使用

项目地址简介android 中使用 opengles 基本思路:使用 GLSurfaceView 作为显示渲染的视图;实现 GLSurfaceView.Renderer 接口,创建自定义的渲染器,然后设置到 GLSurfaceView。GLSurfaceView 配置首先确定所使用的 opengles 版本,然后设置指定的渲染器,最后显示到 Activity 上。需要注意的是,在...

2019-12-30 16:54:41 650 1

原创 android-camera2相机开发-10-opengl离屏渲染、拍照、前后相机切换

项目github地址离屏渲染之前已经将相机的预览数据已经输出到opengl的纹理上,渲染的时候,opengl直接将纹理渲染到了屏幕。但是,如果想要对该纹理进一步处理,就不能直接渲染到屏幕,而是应该先渲染到屏幕外的缓冲区(FrameBuffer)处理完后再渲染到屏幕。渲染到缓冲区的操作就是离屏渲染。离屏渲染的目的是更改渲染目标(屏幕->缓冲区),主要步骤如下:准备离屏渲染所需要的 ...

2019-12-30 16:42:50 1091 1

原创 android-camera2相机开发-9-使用opengl实现LUT滤镜

项目github地址上一篇文章简单的实现了几个常见的滤镜效果,针对每一种滤镜,在片段着色器中编写响应的计算逻辑。但是,随便一个美颜app、短视频app的滤镜都太多了,总不能一个一个写代码去吧,况且好些滤镜特别接近,就让程序员看一眼,怎么写计算逻辑。。其实,这种风格化的滤镜是通过把原图的像素颜色经过过处理,变成另一种颜色来实现的,所以简单的方法就是使用LUT方法,通过设计师提供的LUT文件来实...

2019-12-30 16:42:32 1292

原创 android-camera2相机开发-8-使用opengl实现滤镜效果

项目github地址前一篇文章中,实现了 opengles 进行相机预览的功能,基本的流程如下:把相机的预览数据做成纹理,绑定到opengles对应的纹理单元上然后通过opengles 的内置函数 texture(),在片段着色器中根据纹理和纹理坐标进行插值计算直接将计算结果输出到颜色缓冲区,显示到屏幕的像素上。给图像添加滤镜本质上就是图片处理,也就是对图片的像素进行计算,简单来说,...

2019-12-30 16:42:24 1956

原创 android-camera2相机开发-7-使用opengles进行相机预览

项目github地址前面几篇文章梳理了 android 相机的基本使用流程及相关的 api,完成了预览拍照等功能。就预览而言,后续想做实时滤镜等功能的话,如果按照之前的方法用 ImageReader 拿到数据之后做处理再显示,一是繁琐,而是效率太低,卡顿严重。所以需要使用 opengles 对相机的预览数据进行渲染,可以很大的提高效率,防止卡顿。这篇文章先不做滤镜,而是先实现 opengle...

2019-12-30 16:42:10 845 2

原创 android-camera2相机开发-6-拍照&屏幕旋转适配

前面几篇文章实现了相机的预览,对预览中出现的问题及需要注意的事项进行了梳理。本篇文章对相机的拍照流程、拍照方向及屏幕旋转时的适配问题进行梳理。初始化相机和view这里选择最大的相机输出尺寸作为拍照尺寸和预览尺寸。 @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInst...

2019-12-30 16:41:26 4431 2

原创 android-camera2相机开发-5-获取、处理预览帧数据

camera2 api 中使用 ImageReader 类间接获取预览帧数据。ImageReader 使用之前,需要设置一个监听 OnImageAvailableListener,在预览帧可用时会被回调,在回调方法中可以接收到预览帧,并实现具体的处理逻辑。然后,获取 ImageReader 的 Surface ,在创建相机捕获会话时,添加进去作为输出Sruface。最后,构建捕获请求时,需要...

2019-12-30 16:41:15 1699 1

原创 android-camera2相机开发-4-选取最优预览输出尺寸

1. 拍照模式下的最优输出预览尺寸选择一般来说拍照的时候尽量选择最大的输出尺寸,以达到最好的预览效果(和拍出的照片效果一样)。2. 视频模式下的最优输出预览尺寸选择相机输出尺寸默认是横向的(宽>高),手机窗口一般是竖向的(不考虑旋转横置的情况),所以比较时将输出尺寸的 宽高比 与 预览窗口的 高宽比 进行比较。录制视频的时候,为了预览和播放效果好(充满窗口),可以选择宽高比与预览窗...

2019-12-30 16:40:58 2929

原创 android-camera2相机开发-3-解决相机预览图像拉伸问题

简单来说,预览图像拉伸问题是相机的输出尺寸和屏幕上预览窗口的宽高比不同引起的。所以可以根据选择的相机输出尺寸的宽高比调整预览窗口的宽高比,使两者一致,从而消除图像拉伸问题。本篇文章在上篇文章的基础上,自定义可以设置宽高比的预览控件 AutoFitTextureView ,解决图像拉伸的问题。1. 自定义 AutoFitTextureViewAutoFitTextureView 继承自 Te...

2019-12-30 16:40:42 3526 1

原创 android-camera2相机开发-2-动态切换相机预览尺寸

上一篇文章中介绍了相机预览的基本实现,只固定的显示了一个输出尺寸, android 设备相机实际可以支持输出很多尺寸的图像,不同的设备具体尺寸数值不同,通过系统提供的方法可以获取设备支持的输出尺寸,具体的操作可以参考上一篇文章中的相关内容。本文在上一篇文章的基础上进行调整,实现的效果是,添加一个按钮,点击的时候切换相机输出尺寸,更新预览界面。1. 简单的工具类将一些简单的相机的操作封装程一个...

2019-12-30 16:40:24 3066 1

原创 android-camera2相机开发-1-相机预览

1. 配置权限AndroidManifext.xml文件:<uses-permission android:name="android.permission.CAMERA" />android6.0以后的动态权限:网上很多教程,这里不再赘述。2. 布局文件很简单的布局,只有一个 TextureView 。<?xml version="1.0" encoding="u...

2019-12-30 16:38:28 886

C++心得参考

C++前辈们学习C++的心得,希望对新手们有所帮助

2012-05-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除