OpenGL.ES在Android上的简单实践
Mr_Zzr
这个作者很懒,什么都没留下…
展开
-
GPUImage for Android学习笔记(2017)
这是当年学习GPUImage的云笔记,编幅比较长,就不一一搬过来CSDN了。详细学习记录,请查看有道云笔记连接:http://note.youdao.com/noteshare?id=d6562c5aa0741d2bb7436d7890d96ae2github工程:https://github.com/MrZhaozhirong/GPUImage最近工作生活都基本忙完了,所以就回...原创 2019-11-12 16:04:21 · 877 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:23-水印录制(FBO离屏渲染,解决透明冲突,画中画)
OpenGL.ES在Android上的简单实践:23-水印录制(FBO离屏录制,解决透明冲突)1、水印签名罢工了?不知道大家有没注意到,之前我们使用MediaCodec录制的视频,水印签名那部分区域还是黑黑的啊(笑哭.jpg)。道理还是之前说过的,原生的Surface默认格式是RGB565,不支持透明通道。我也在20-水印录制提供了解决方案。 第一种就是在shader层使用内置函...原创 2018-06-12 11:05:45 · 7556 阅读 · 34 评论 -
OpenGL.ES在Android上的简单实践:22-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 下)
OpenGL.ES在Android上的简单实践:22-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 下) 1、Inner CameraRecordEncoder我们先来温故一下CameraRecordEncoder的设计逻辑,其代码组成分为 编码录制工作线程,和供外部请求操作的方法。以请求开始录制方法startRecording为例。public c...原创 2018-06-04 16:55:59 · 2422 阅读 · 14 评论 -
OpenGL.ES在Android上的简单实践:21-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 上)
OpenGL.ES在Android上的简单实践:21-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 上)1、录制视频需要什么?在上篇文章,我们已经成功的满足了需求,在预览摄像头的同时加上一些简单的视频二次处理(水印)。接下来我们就是要把视频录制下来,这就涉及视频的编码范畴了。视频编解码知识点无论在哪个平台上的操作系统上,都是比较难的一个知识点。在Android...原创 2018-06-01 16:11:15 · 3971 阅读 · 17 评论 -
OpenGL.ES在Android上的简单实践:20-水印录制(预览+透明水印 表情 弹幕 gl_blend)
OpenGL.ES在Android上的简单实践:20-水印录制(预览 gl_blend)1、继续画出预览帧紧接着上篇文章,既然是要画出预览帧,按照之前其他项目的架构组成。我们是通过模型FrameRect.draw的方法画出预览帧,在定义这个draw方法之前我们从着色器出发,看看需要什么。 private static final String VERTEX_SHADER ...原创 2018-05-23 17:49:56 · 7874 阅读 · 15 评论 -
OpenGL.ES在Android上的简单实践:19-水印录制(EGL+摄像头预览 )
OpenGL.ES在Android上的简单实践:19-水印录制(EGL+摄像头预览 GL_TEXTURE_EXTERNAL_OES) 0、补充EglSurfaceBase在自己实际运用中,发现EglSurfaceBase还是缺了对原生的surface的管理,对整体的理解好像总缺了点啥。所以在EglSurfaceBase的基础上,派生出了WindowSurface。代码超级简单...原创 2018-05-22 11:34:54 · 5735 阅读 · 7 评论 -
OpenGL.ES在Android上的简单实践:18-水印录制(自定义Android-EGL)
OpenGL.ES在Android上的简单实践:18-水印录制(自定义Android-EGL) 1、确定需求这次的项目需求总结下来是这样的:一个摄像头预览界面,一个按钮触发屏幕录制,录制视频带上水印效果。1. 摄像头预览2. 屏幕录制3. 录制视频在指定位置附带上水印确定需求后,我们逐一分析模块组成并完成它。So,Talk is cheap,Let me show co...原创 2018-05-18 15:45:12 · 2633 阅读 · 2 评论 -
OpenGL.ES在Android上的简单实践:17-水印录制(认识Android的EGL)
OpenGL.ES在Android上的简单实践:17-水印录制(认识Android的EGL) -1、先吹下水,装下*距离上一个主题有一段时间了,最近都在忙工作,因为需要在Android上写C++,所以就复习了一些NDK的知识。打算之后也会整理并写下这一块的博客,把一些复杂的code记录在案方便学习(其中包括webrtc,简单的ffmpeg,AAC,H264都会涉及介绍)正所谓好记性...原创 2018-04-27 17:47:30 · 2577 阅读 · 2 评论 -
OpenGL.ES在Android上的简单实践:16-全景(视野变换 完结)
OpenGL.ES在Android上的简单实践:16-全景(视野变换 完结) 让我们继续完成视野变换,先回顾一下之前我们所做的内容:当我们在屏幕上双击测试页面的glsurfaceview,会触发渲染器的双击事件,进而向全景球模型请求下一个模型的变换。在全景球模型中,我们定义了两个观察视口CameraViewport,一个是当前的,另外一个是目标的;还有两个模型模式的标志位RENDER_...原创 2018-04-08 15:07:33 · 1173 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:15-全景(视野变换 上)
OpenGL.ES在Android上的简单实践:15-全景(视野变换)本篇文章只有一个内容,就是模仿Insta360的视野变换效果,实现我们全景球的视野变换。首先来直观的感受一下Insta360的绚丽的变换效果。然后加以分析一下,视野变换的关键变量有哪些?(insta360视野变换效果)(左下角标注了视野的名称)从动图中看到,其实这几个视野(特别是小行星)都是基于一个球体的表面所...原创 2018-04-04 17:10:14 · 1086 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:14-全景(惯性滑动球体)
OpenGL.ES在Android上的简单实践:14-全景(惯性滑动球体)1、整理封装全景球现在,我们的地球已经能正确的显示出来,我们来增加必要的交互,使得我们左右滑动屏幕的时候,地球能旋转起来,而且是像一个地球仪一样,手指离开屏幕后,能随着惯性的操作延后旋转。第一步,我们现在测试页面PanoramaActivity添加对GLSurfaceView的触摸事件监听,...原创 2018-04-03 17:42:47 · 1162 阅读 · 7 评论 -
OpenGL.ES在Android上的简单实践:13-全景(画个球)
OpenGL.ES在Android上的简单实践:13-全景(画个球)1、画个球继续上一节的操作,我们已经通过两次for循环遍历了一个球的所有网格矩形的顶点,并用List存储起来。并且用另外的一个List存储所要画的三角形顶点的索引值。接下来,我们就要开始使用VBO-IBO画出网格矩形,最终画出整个球体出来。 private void initVertexData...原创 2018-03-29 16:13:01 · 1668 阅读 · 13 评论 -
OpenGL.ES在Android上的简单实践:12-全景(VBO-IBO)
OpenGL.ES在Android上的简单实践:12-全景(VBO-IBO)1、VAO?VBO?还记得我们的之前学习的VAO吗?不清楚的同学请看这里,其实就是我们的模板代码VertexArray,那这里新蹦出来的VBO又是什么?首先我们先来认识VBO的全称——VertexBufferObject,顶点缓存对象。这和VAO——VertexArrayObject的差别就在于一个...原创 2018-03-27 10:39:25 · 1320 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:11-全景(索引-深度测试)
OpenGL.ES在Android上的简单实践:11-全景(正方体-索引-深度测试)0、全景图要怎么看?What is 全景?可能很多人单看这名字不太清楚。但看到下面的图的时候就噢的一声~瞬间廓然开朗大家在欣赏大视野的同时,有些人可能也觉得和普通的照片没啥区别嘛╮(╯▽╰)╭就比普通的照片大一点嘛。是这样吗?再看看下面的连接:http://720yun.com/t/242j...原创 2018-03-20 18:07:54 · 1126 阅读 · 3 评论 -
OpenGL.ES在Android上的简单实践:10-曲棍球(拖动物体、碰撞测试)
OpenGL.ES在Android上的简单实践:10-曲棍球(拖动物体、碰撞测试)1、让木槌跟随手指移动继续上一篇文章9的内容。既然可以测试木槌是否被触碰了,我们将继续努力下去:当我们来回拖动木槌的时候,它要去哪里?我们可以用这种方式思考:木槌平放在桌面上,当我们来回移动手指的时候,木槌应该随着手指移动并继续平放在桌子上。我们可以通过执行 射线-平面(Ray-Plane) 相交测试计...原创 2018-03-14 18:05:22 · 805 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:9-曲棍球(交互、相交测试)
OpenGL.ES在Android上的简单实践:9-曲棍球(交互、相交测试)0、开始之前,我想说些话。桌面曲棍球项目从开篇1,到上篇8其实基本完成了OpenGL-3D部分的基础学习了,曲棍球项目也快接近尾声了。从这篇文章开始,还有下篇文章的内容,我自己感觉有点偏,准确来说不是OpenGL的必学内容,是三维游戏的基础知识。而且和文章7、8(构建物体对象)的有一丝相似点,就是...原创 2018-03-09 17:27:46 · 1117 阅读 · 2 评论 -
OpenGL.ES在Android上的简单实践:8-曲棍球(构建冰球木槌 下 & 模型视图投影矩阵)
OpenGL.ES在Android上的简单实践:8-曲棍球(构建圆柱体木槌)1、创建木槌顶点数据本篇文章继续第7篇文章之后的内容,我们通过ObjectBuilder.cratePuck创建冰球了(偏平圆柱体),这次我们在之前的基础上创建简易木槌(矮扁的圆柱底部+苗条的圆柱摇杆)如下图手柄的高度占整体高度的75%,而基部的高度占整体高度25%。我们也可以看出手柄的宽度占整体宽...原创 2018-02-24 15:30:37 · 867 阅读 · 5 评论 -
OpenGL.ES在Android上的简单实践:7-曲棍球(构建冰球木槌 上)
OpenGL.ES在Android上的简单实践:7-曲棍球(构建冰球木槌 上) 这一章的内容大体上,不涉及OpenGL.ES的内容,而且在实际商业开发中是一般不会使用到的。然而,我想说的是,作为一个专业的三维开发工程师,图形开发者,GPU研究人员(等等更多高逼格称呼的程序员)来说,掌握基础的图形构建是很有必要的。想想大千世界的物体不都是由这些简单几何体一步步构建起来的吗?可能又有...原创 2018-02-08 11:42:47 · 764 阅读 · 0 评论 -
OpenGL.ES在Android上的简单实践:6-曲棍球(增加纹理,VAO,ShaderProgram)
OpenGL.ES在Android上的简单实践:6-曲棍球(增加纹理,VAO,ShaderProgram) 1、理解纹理到了第六篇,我们已经设法只用简单的图形和颜色完成了很多工作,但还是缺少很多甲方客户要求的外观细节。此时我们需要加入绘图并加入精致的细节了。下面我们引入纹理(texture)加入额外的细节。例如下图:简答来说,纹理就是一个图像或者照片,可以被加载到OpenGL中...原创 2018-02-01 18:24:13 · 1602 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:5-曲棍球(透视投影/模型矩阵)
OpenGL.ES在Android上的简单实践:5-曲棍球(透视投影/模型矩阵)1、初识三维投影想象一下,我们平常玩的乒乓球(曲棍球),面向你的对手观察这个桌子。从你的角度看,这个桌子看上去是什么样子的?你那端的桌子显得较大,因为你是从一个角度向对面观察这个桌子的,而不是直接从空中俯视。毕竟没有人玩乒乓球(曲棍球)的时候站在桌子的上面并直接向下看。那么问来又来了,在二维平面...原创 2018-01-25 18:23:26 · 1311 阅读 · 2 评论 -
OpenGL.ES在Android上的简单实践:4-曲棍球(正交投影解决横屏变形)
OpenGL.ES在Android上的简单实践:4-曲棍球(正交投影解决横屏变形) 你可能还没注意到曲棍球桌子在横屏的时候是怎样的龌蹉难看。不信你看看:桌子在横屏模式情况下被压扁了,这之所以会发生,是因为我们之前直接把坐标传递給OpenGL,但OpenGL在每个屏幕上都是归一化坐标系,没有考虑屏幕的宽高比。那么怎么处理科学的处理这个问题呢?一个可行的方法就是把较小的范围固定在 ...原创 2018-01-19 17:31:13 · 1273 阅读 · 8 评论 -
OpenGL.ES在Android上的简单实践:3-曲棍球(顶点归一化、增加颜色)
OpenGL.ES在Android上的简单实践:3-曲棍球(顶点归一化 、增加颜色) 1、顶点归一化承接上 简单实践系列文章:2。 运行程序后,大家看见了什么,是不是如下图? what the fxxk?! 以上这个问题详细原因很复杂,随着文章深入,答案自然就会迎刃而解;目前,我们来认识一件事,无论是x坐标还是y坐标,OpenGL都会把屏幕映射到 [-1,1]的范围内。...原创 2018-01-18 16:17:12 · 1485 阅读 · 2 评论 -
OpenGL.ES在Android上的简单实践:2-曲棍球(编译着色器及屏幕上绘图)
OpenGL.ES在Android上的简单实践:2-曲棍球(编译着色器及屏幕上绘图) 本文会继续上一篇开始的工作。我们首先加载并编译前面定义的着色器,然后把它们链接在一起放在OpenGL的一个程序里。我们接下来就可以用着色器程序在屏幕上绘制曲棍球桌子了。1、加载着色器。既然我们已经准备好了顶点着色器和片段着色器,我们就需要把它们从res/raw/shader.glsl 加载到内存。...原创 2018-01-17 15:59:54 · 1381 阅读 · 0 评论 -
OpenGL.ES在Android上的简单实践:1-曲棍球(基本环境和定义顶点)
OpenGL.ES在Android上的简单实践:1-曲棍球(基本环境和定义顶点)简单的曲棍球 实例编码 1 废话不说,开码。 1、首先创建一个空的Activity,命名HockeyActivity。去除默认的setContentView,我们不用自定义布局文件,增加两个成员变量。 public class Hoc...原创 2018-01-09 16:37:27 · 2054 阅读 · 1 评论 -
OpenGL.ES在Android上的简单实践:0(前言)
OpenGL.ES在Android上的简单实践:0(前言) 2014年开始接触OpenGL.ES,从兴趣开始到现在的工作运用,感觉自己一路摸索的学习道路还不算很歪,踩过不少的坑。所以决定在2018年,详细记录和分析OpenGL.ES在Android上实际运用和注意事项,温故而知新的同时,希望能帮助到大家。而且更重要的是,OpenGL.ES的教案很多都是停留着Windows平台上原创 2018-01-08 13:39:23 · 1514 阅读 · 3 评论