Android显示YUV图像
需要流畅显示YUV图像需要使用Opengl库调用GPU资源,网上在这部分的资料很少。实际上Android已经为我们提供了相关的Opengl方法
主体过程如下:
1、建立GLSurfaceView
2、建立Render
4、设置GLSurfaceView的Render为你创建的Render,并设置RenderMode为RENDERMODE_WHEN_DIRTY
3、把数据推入Render
而在Render中需要实现3个方法
1、void onSurfaceCreated(GL10 gl, EGLConfig config)
2、void onDrawFrame(GL10 gl)
3、void onSurfaceChanged(GL10 gl, int width, int height)
onSurfaceCreated需要一些初始化工作,括号内是具体方法:
生成Textures的ID(glGenTextures)->绑定需要操作的Texture(glBindTexture)->设置相关参数(glTexParameterf)->操作下一个Texture....
->建立Shader(glCreateShader)->导入Shader代码字符串(glShaderSource)->编译Shader(glCompileShader)->检查编译状态(glGetShaderiv)->下一个Shader....
->建立Program(glCreateProgram)->绑定Shader(glAttachShader)->绑定属性(glBindAttribLocation)->链接Program(glLinkProgram)->检查Program链接状态(glGetProgramiv)
->取得attribute变量、uniform变量的句柄->告诉Opengl在rendering的时候使用这个Program(glUseProgram)
onDrawFrame在视图刷新的时候会被使用
绑定需要操作的Texture(glBindTexture)->设置Texture内容(glTexImage2D)->操作下一个Texture....
清缓存->指定顶点属性数组(glVertexAttribPointer)->使能顶点数组(glEnableVertexAttribArray)
->激活Opengl的Texture(glActiveTexture)->绑定需要操作的Texture(glBindTexture)->设置纹理单元的一致变量(glUniform1i)->操作下一个Texture....
绘图!!!!(glDrawArrays)
在将数据准备完成的时候,使用requestRender()就会调用onDrawFrame
Android显示YUV图像的更多相关文章
- Android 显示YUV编码格式
ByteArrayOutputStream out = new ByteArrayOutputStream(); String path = "res/drawable/sample.yuv ...
- Android上使用OpenGLES2.0显示YUV数据
在Android上用OpenGLES来显示YUV图像,之所以这样做,是因为: 1.Android本身也不能直接显示YUV图像,YUV转成RGB还是必要的: 2.YUV手动转RGB会占用大量的CPU资源 ...
- Android用surface直接显示yuv数据(三)
本文用Java创建UI并联合JNI层操作surface来直接显示yuv数据(yv12),开发环境为Android 4.4,全志A23平台. package com.example.myyuvviewe ...
- Android用surface直接显示yuv数据(二)
上一篇文章主要是參照AwesomePlayer直接用SoftwareRenderer类来显示yuv,为了能用到这个类,不惜依赖了libstagefright.libstagefright_color_ ...
- Android使用surface直接显示yuv数据(三)
在本文中,Java创建UI和关节JNI经营层surface直接显示yuv数据(yv12).发展环境Android 4.4,驰A23平台. package com.example.myyuvviewer ...
- Android视频录制从不入门到入门系列教程(二)————显示视频图像
1.创建一个空的工程,注意声明下列权限: <uses-permission android:name="android.permission.CAMERA"/> < ...
- iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像
iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像 本文档基于H.264的解码,介绍读写Video Toolbox解码回调函数参数CVImag ...
- Android显示系统设计框架介绍
1. Linux内核提供了统一的framebuffer显示驱动,设备节点/dev/graphics/fb*或者/dev/fb*,以fb0表示第一个显示屏,当前实现中只用到了一个显示屏. 2. Andr ...
- 在YUV图像上根据背景色实现OSD反色
所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...
随机推荐
- ng事件中为变量的参数
之前学习Angular时碰到过这种问题,绑定事件中传参为变量的问题. 举个例子吧,比如有这么一段代码: <button type='button' ng-click="showMsg( ...
- ORACLE DUAL表详解 .
今天在戴明明同学的QQ空间里看到篇不错的关于DUAL表的文章,自己平时也时而会用到,可是没有系统的学习过,借这个机会学习学习~ ==================================== ...
- 使用bootstrap时,选项框出现的意外效果,怎么办?
<label for="" style="float:right;margin-right:10%;"> <input type=&q ...
- Raknet实现的简单服务器与客户端的交互
1. 首先下载Raknet的源代码,我用的是4.0的,不是最新的,解压后编译DLL工程,编译完成后进入解压的根目录下,进入Lib文件夹下找到RakNet_DLL_Debug_Win32.dll, R ...
- 配置阿里云作为yum 源
第一步:下载aliyum 的yum源配置文件. http://mirrors.aliyun.com/repo/ 第二步:把下载到的repo文件复制到/etc/yum.repo.d/目录下. ----- ...
- AppWidget应用(一)---创建一个appWidget
appWidget是显示的桌面上的小窗口程序,通过它可以达到用户与程序之间的交互. 下面我们来看下创建一个appWidget的步骤 一.首先在layout文件夹下创建一个appWidget的布局文件a ...
- C语言的本质(27)——C语言与汇编之计算机结构
现代计算机都是基于冯·诺依曼或哈佛体系结构的,不管是嵌入式系统.个人电脑还是服务器.这种两种体系结构的主要特点是:CPU和内存是计算机的两个主要组成部分,内存中保存着数据和指令,CPU从内存中取指令执 ...
- 在Eclipse中创建打开文件夹快捷键
Run 展开如下菜单: Run ---- External Tools ---- External Tools Configurations 在 program 下面新建一个工具 在 Location ...
- OSCHina技术导向:Java WEB企业门户平台Liferay
Liferay 是一个完整的门户解决方案,基于J2EE的应用,使用了EJB以及JMS等技术,前台界面部分使用Struts MVC 框架,基于XML的portlet配置文件可以自由地动态扩展,使用了We ...
- VC连接SQL server2005
VC连接SQL server2005 1.创建一个MFC对话框程序 界面如下 2.创建一个成员变量 这个成员变量用于连接数据库 3.响应按钮函数OnButton1() 在响应函数里主要有三个函数 函数 ...