Android OpenGLES
Android端OpenGLES基础教程
求闲
这个作者很懒,什么都没留下…
展开
-
Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合
Blend是OpenGL中的一个非常重要的部分,它可以让每个输出的源和目的颜色以多种方式组合在一起,以呈现出不同的效果,满足不同的需求。原创 2017-08-03 10:37:43 · 15610 阅读 · 7 评论 -
GLSurfaceView的简单分析及巧妙借用
学习在Android中使用OpenGLES,就不得不提到一个控件:GLSurfaceView。本篇博客将介绍GLSurfaceView的基本使用、GLSurfaceView的源码的简单分析,以及使用GLSurfaceView渲染图像到SurfaceView/TextureView或者PBuffer上等。关于GLSurfaceViewGLSurfaceView继承了SurfaceView,实现了Sur原创 2017-06-25 14:59:39 · 26663 阅读 · 5 评论 -
Android OpenGLES2.0(一)——了解OpenGLES2.0
什么是OpenGL ES? OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。OpenGL在不同的平台上有不同的实现,但是它定义好了专业的程序接口,不同的平台都是遵照该接口来进行实现的,思想完全相同,方法名也是一致的,所以使用时也基本一致,只需要根原创 2016-10-12 00:04:25 · 29441 阅读 · 19 评论 -
Android OpenGLES2.0(二)——绘制一个三角形
选择绘制三角形作为OpenGL ES 2.0的第一个实例,是因为前文中提到的,点、线、三角形是OpenGL ES世界的图形基础。无论多么复杂的几何物体,在OpenGL ES的世界里都可以用三角形拼成。关于Android OpenGL ES 三角形的绘制,在Android官方文档中有详细的说明和步骤,本文实例也是依照官方文档步骤绘制的三角形。步骤依照官方文档中的说明,Android中利用OpenGL原创 2016-10-12 22:50:54 · 24007 阅读 · 31 评论 -
Android OpenGLES2.0(三)——等腰直角三角形和彩色的三角形
上一篇博客中我们已经绘制出了一个直角三角形,虽然我们相对于坐标,我们设置的直角三角形的两腰是相等的,但是实际上展示出来的却并不是这样,虽然通过计算,我们可以把三角形的两腰计算一下比例,使它们在坐标上不等,但是现实出来相等,但是当绘制的图形比较复杂的话,这个工作量对我们来说实在太庞大了。那么我们怎么做呢?答案是,使用变换矩阵,把计算交给OpenGL。矩阵 在数学中,矩阵(Matrix)是一个按照长原创 2016-10-14 18:06:31 · 15427 阅读 · 18 评论 -
Android OpenGLES2.0(四)——正方形和圆形
上篇博客中我们已经使用到了相机和投影,利用变换矩阵,绘制出了等腰直角三角形。在本篇博客中,我们绘制正方形和圆形同样少不了变换矩阵。构建正方形和圆形前面提到过,在OpenGLES的世界里面是没有正方形和圆形的,只有点、线、三角形。三角形就是OpenGLES提供的最复杂的图元单位。所以我们要绘制填充的正方形和圆形就需要利用三角形来实现。正方形正方形的构建比较简单,可以用两个三角形组成。当然,你也可以用很原创 2016-10-14 22:11:23 · 13052 阅读 · 7 评论 -
Android OpenGLES2.0(五)——绘制立方体
上篇博客中我们提到了OpenGLES中绘制的两种方法,顶点法和索引法。之前我们所使用的都是顶点法,这次绘制立方体使用索引法来绘制立方体。构建立方体上篇博客讲到正方形的绘制,立方体是是由六个正方形组成,我们将这六个正方形绘制出来,立方体就绘制完毕了。既然选择用索引法来绘制,立方体拥有八个顶点,我们先将这八个顶点列出来,放到一个数组中:final float cubePositions[] = {原创 2016-10-15 00:19:54 · 13237 阅读 · 6 评论 -
Android OpenGLES2.0(六)——构建圆锥、圆柱和球体
之前的博客中,我们绘制了三角形、正方形、圆形、立方体,今天我们将绘制圆锥、圆柱和球体。能够绘制这些基本的常规几何形体后,其他的常见几何形体的绘制对于我们来说就基本没问题了。绘制圆锥由之前的博客,我们大家也应该都知道了,OpenGL ES2.0中物体的绘制重点就是在于把这个物体表面分解成三角形,分解成功后,绘制自然就不成问题了。圆锥我们很容易就能想到把它拆解成一个圆形和一个锥面,锥面的顶点与圆形的顶点原创 2016-10-16 00:45:35 · 10416 阅读 · 9 评论 -
Android OpenGLES2.0(七)——着色器语言GLSL
在前面的博客中,我们都使用到了片元着色器和顶点着色器,相信我们对着色器语言有了一点了解。前面我们所使用的着色器,代码非常简单,能做的事情非常有限,而在后面的博客中我们将会用到的着色器的越来越复杂,所以在这里单独写一篇博客来介绍我们使用到的着色器语言GLSL。关于着色器 着色器是用来实现图像渲染的,用来替代固定渲染管线的可编程程序。着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算原创 2016-10-16 16:07:23 · 19989 阅读 · 6 评论 -
Android OpenGLES2.0(八)——纹理贴图之显示图片
前面几篇博客,我们将了Android中利用OpenGL ES 2.0绘制各种形体,并在上一篇博客中专门讲了GLSL语言。但是我们看到的基于OpenGL开发的应用和游戏,可不仅仅是那些规则形体和一些简单的色彩构成,而是各种不规则的形体构成了现实世界或者卡通世界的人和事物,他们都是外面穿着漂亮“衣服”的。本篇博客就是来讲解这些“衣服”的基础的。这些衣服就是纹理贴图。什么是纹理贴图 一般说来,纹理是表原创 2016-10-23 01:15:49 · 33547 阅读 · 59 评论 -
Android OpenGLES2.0(九)——利用OpenGL进行图片处理
在之前的博客中我们就有提过OpenGLES的常见应用范围,其中有一个就是图片的处理。为了保证效率,Android手机中许多美颜相机、图片处理应用,都用到了OpenGLES来处理图片。上一篇博客中,我们利用OpenGLES 显示出了一张图片,并保证图片正常显示,不会被拉伸和压缩。在本篇博客中,我们来了解下利用OpenGLES来处理图片的一些简单方法。相关原理本篇博客以简单的图片色彩处理、模糊和放大镜效原创 2016-10-23 17:57:21 · 16808 阅读 · 29 评论 -
Android OpenGLES2.0(十)——OpenGL中的平移、旋转、缩放
在前面的博客中,所有的例子都是一个对象,类似绘制圆锥绘制圆柱,我们都是传入一个参数,然后去控制那个圆面的位置,如果我们要绘制几个个正方形,它的位置、大小、方向都是不相同的,按照那种方式该多麻烦啊。所以我们需要更好的办法——矩阵变换。什么是矩阵其实在之前的博客中,我们也基本都用到了矩阵,投影的设置,就是根据参数生成一个4*4的矩阵,我们用长度为16的浮点型数组来存储,相机的设置也是如此。那么矩阵到底该原创 2016-11-14 01:27:09 · 19818 阅读 · 10 评论 -
Android OpenGLES2.0(十一)——利用OpenGLES做Camera预览
学习FFMpeg,推荐雷神的博客。天妒英才,为雷神叹息。第一步 下载FFmpeg(F F m peg)。 第二步 解压FFmpeg。 第三步 windows安装MinGW和Msys。也许还要yasm,名字改为yasm.exe放到C:\WINDOWS\system32中。Linux下就不用这么麻烦了。 第四步 建立如下目录结构,ffmpeg为解压出来的FFmpeg。configure为ff原创 2016-11-26 20:09:19 · 19906 阅读 · 12 评论 -
Android OpenGLES2.0(十二)——FBO离屏渲染
之前的博客我们所做的示例都是直接渲染到屏幕上的,如果我们并不需要渲染到屏幕上,也就是离屏渲染,该怎么做呢?FBO离屏渲染是一个很好的选择。在这篇博客中,我们将以渲染摄像头数据为例,使用FBO进行离屏渲染。关于FBO离屏渲染所谓的FBO就是Frame Buffer Object。之前我们使用OpenGLES渲染,都是直接渲染到屏幕上,FBO可以让我们的渲染不渲染到屏幕上,而是渲染到离屏B原创 2016-12-24 18:36:06 · 30648 阅读 · 20 评论 -
Android OpenGLES2.0(十三)——流畅的播放逐帧动画
在当前很多直播应用中,拥有给主播送礼物的功能,当用户点击赠送礼物后,视频界面上会出现比较炫酷的礼物特效。这些特效,有的是用粒子效果做成的,但是更多的时用播放逐帧动画实现的。在本篇博客中的动画素材,就是从花椒直播中“借”出来的,只做学习交流用,应该不构成侵权吧?那么如何实现这种动画效果呢?逐帧动画的实现方案分析有些朋友看到逐帧动画可能会想,逐帧动画还不容易吗?Android中的动画本来就支持原创 2016-12-25 22:35:23 · 14178 阅读 · 22 评论 -
Android OpenGLES2.0(十四)——Obj格式3D模型加载
在博主《OpenGLES系列》文章中,最开始的几篇讲的就是OpenGL世界中各种形体的构建,但是那些形体都是规则的简单形体,遇到复杂的形体,比如说一个人、一朵花,怎么办呢?自然是通过其他工具类似于Maya、3DMax等3D建模工具,做好模型导出来,然后用OpenGLES加载导出的模型文件。模型的加载大同小异,本篇博客是以Obj格式的3D模型为例。模型文件本篇博客例子中加载的是一个帽子,原创 2017-01-10 02:11:19 · 20602 阅读 · 20 评论 -
Android OpenGLES2.0(十五)——利用EGL后台处理图像
在Android OpenGLES2.0(十二)——FBO离屏渲染中,记录了采用FBO进行离屏渲染的方式来进行后台处理图像,但是在使用时,示例中还是用到了GLSurfaceView控件来提供GL环境。怎样完全抛开GLSurfaceView来进行图像处理呢?OpenGLES和EGL OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的原创 2017-02-20 10:36:27 · 14410 阅读 · 13 评论 -
Android OpenGLES2.0(十六)——3D模型贴图及光照处理(obj+mtl)
在Android OpenGLES2.0(十四)——Obj格式3D模型加载中实现了Obj格式的3D模型的加载,加载的是一个没有贴图,没有光照处理的帽子,为了呈现出立体效果,“手动”加了光照,拥有贴图的纹理及光照又该怎么加载呢?模型文件本篇博客例子中加载的是一个卡通形象皮卡丘,资源是在网上随便找的一个。加载出来如图所示: obj内容格式如下:# Wavefront OBJ file# Expor原创 2017-02-27 22:53:41 · 13665 阅读 · 13 评论 -
Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理
Android Lollipop 增加了Camera2 API,并将原来的Camera API标记为废弃了。相对原来的Camera API来说,Camera2是重新定义的相机 API,也重构了相机 API 的架构。初看之下,可能会感觉Camera2使用起来比Camera要复杂,然而使用过后,你也许就会喜欢上使用Camera2了。无论是Camera还是Camera2,让相机遇到OpenGL就比较好玩原创 2017-03-14 23:22:20 · 25201 阅读 · 30 评论 -
Android OpenGLES2.0(十七)——球形天空盒VR效果实现
在3D游戏中通常都会用到天空盒,在3D引擎中也一般会存在天空盒组件,让开发者可以直接使用。那么天空盒是什么?天空盒又是如何实现的呢?本篇博客主要介绍如何在Android中利用OpenGLES绘制一个天空盒,并实现VR效果。天空盒、天空穹、天空球和VR虽然大多数人知道这些东西是啥,但是我觉得我还是有必要把他们的定义“搬”过来,万一有人不知道呢。天空盒(Sky Box)是放到场景中的一个立方体,经常是原创 2017-05-29 17:44:23 · 17428 阅读 · 25 评论