opengl
Red风信子
厚积而薄发
展开
-
Android OpenGLES2.0(十)——OpenGL中的平移、旋转、缩放
在前面的博客中,所有的例子都是一个对象,类似绘制圆锥绘制圆柱,我们都是传入一个参数,然后去控制那个圆面的位置,如果我们要绘制几个个正方形,它的位置、大小、方向都是不相同的,按照那种方式该多麻烦啊。所以我们需要更好的办法——矩阵变换。什么是矩阵其实在之前的博客中,我们也基本都用到了矩阵,投影的设置,就是根据参数生成一个4*4的矩阵,我们用长度为16的浮点型数组来存储,相机的设置也是如此。那么矩...转载 2018-12-03 23:50:44 · 1122 阅读 · 0 评论 -
Android OpenGL ES 开发教程(6):GLSurfaceView
Android OpenGL ES 相关的包主要定义在javax.microedition.khronos.opengles GL 绘图指令 javax.microedition.khronos.egl EGL 管理Display, surface等 android.opengl Android GL辅助类,连接OpenGL 与Android Vie...原创 2018-11-28 16:35:04 · 229 阅读 · 0 评论 -
OpenGL ES 2.0 — 制作 3D 彩色旋转三角形 – 顶点着色器 片元着色器 使用详解
案例下载地址 : http://download.csdn.net/detail/han1202012/6651095 需要SDK-10 版本2.3.3 一. 程序介绍 1. 样例展示 该程序打开之后会出现一个旋转的三角形, 该三角形一直绕x轴z方向旋转 如图 : 2. 程序结构 本程序中定义了四个类 : ShaderUtil , Tria...原创 2018-12-01 02:14:54 · 668 阅读 · 2 评论 -
Android OpenGL ES 开发教程(5):关于EGL
OpenGL ES的javax.microedition.khronos.opengles 包定义了平台无关的GL绘图指令,EGL(javax.microedition.khronos.egl )则定义了控制displays ,contexts 以及surfaces 的统一的平台接口。Display(EGLDisplay) 是对实际显示设备的抽象。 Surface(EGLSurface...原创 2018-11-28 15:03:00 · 204 阅读 · 0 评论 -
Android OpenGL ES 开发教程(4):OpenGL ES API 命名习惯
OpenGL ES是个跨平台的3D图形开发包规范,最常见的实现是采用C语言实现的,Android OpenGL ES 实现上是使用Java 语言对底层的C接口进行了封装,因此在android.opengl javax.microedition.khronos.egl ,javax.microedition.khronos.opengles 包中定义的OpenGL相关的类和方法带有很强的C语言色彩。...原创 2018-11-28 14:58:34 · 121 阅读 · 0 评论 -
Android OpenGL ES 开发教程(3):OpenGL ES管道(Pipeline)
大部分图形系统都可以比作工厂中的装配线(Assemble line)或者称为管道(Pipeline)。前一道的输出作为下道工序的输入。主CPU发出一个绘图指令,然后可能由硬件部件完成坐标变换,裁剪,添加颜色或是材质,最后在屏幕上显示出来。OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工的工序是固定的,但是可...原创 2018-11-28 14:52:15 · 218 阅读 · 0 评论 -
formats Android OpenGL ES 开发教程(2):关于OpenGL ES
Contents1什么是OpenGL ES? 2OpenGL 与 OpenGL ES的关系 3OpenGL ES Profiles什么是OpenGL ES?OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES 定义了一个在移动平台上能够支持Op...原创 2018-11-28 14:45:10 · 117 阅读 · 0 评论 -
formats Android OpenGL ES 开发教程(1):导言
Android ApiDemos到目前为止,介绍完了出View以外的所有例子,在介绍Graphics示例时跳过了和OpenGL ES 相关的例子,OpenGL ES 3D图形开发需要专门的开发教程,因此从今天开始一边继续Android ApiDemos Views例子的解析,同时开始Android OpenGL ES 开发教程。在学习Android OpenGL ES开发之前,你必须具备Jav...原创 2018-11-28 14:41:22 · 138 阅读 · 0 评论 -
Android OpenGL ES 简明开发教程七:材质渲染
摘要:该系列文章均转载自/content/540025.html由于原文好像无法打开,正好自己有记录,所以正好分享出来,其中也对一些API作了解释。前面讨论了如何给3D图形染色,更一般的情況是使用点阵图來给Mesh上色(渲染材质)。主要步骤如下:创建Bitmap对象使用材质渲染,首先需要构建用来渲染的Bitmap对象,Bitmap对象可以从资源文件中读取或者是从网络加载,或者是用代码构造,为简单起...原创 2018-11-28 14:27:37 · 221 阅读 · 0 评论 -
Android OpenGL ES 简明开发教程六:真正的3D图形
摘要:该系列文章均转载自/content/540025.html由于原文好像无法打开,正好自己有记录,所以正好分享出来。Mesh(网格,三角面)是构成空间形体的基本元素,前面的正方形也是由两个Mesh构成的。本篇将介绍使用Mesh构成四面体,椎体等基本空间形体。Design设计在使用OpenGL框架时一个好的设计原则是使用“CompositePattern”(组合模式),本篇采用如下设计:Mesh...原创 2018-11-28 10:19:21 · 864 阅读 · 0 评论 -
OpenGL ES 2.0 Shader相关介绍
最近手机项目要用到opengl和shader,虽然此前也搞过opengl,那时对opengl掌握的也还算熟悉,时隔四五年后,再翻看以前的程序,有些茫然,虽然大体明白怎么回事,但是很多技术细节忘了个干净,于是赶紧查阅了一下相关资料,还好,很多东西很快又捡了回来。在查阅资料过程中,发现这篇文章不错,只是文章发布在网易博客,因为博客排版的原因,阅读体验不是很好,于是周末花点时间,把这篇文章简单整理了下,...原创 2018-11-30 20:21:23 · 124 阅读 · 0 评论 -
Android OpenGL ES 开发教程(7):创建实例应用OpenGLDemos程序框架
有了前面关于Android OpenGL ES的介绍,可以开始创建示例程序OpenGLDemos。使用Eclipse 创建一个Android项目Project Name: OpenGLDemos Build Target: Android 1.6 ( >1.5 即可) Application Name: Android OpenGL ES Demos Package Name:...原创 2018-11-28 17:05:11 · 109 阅读 · 0 评论 -
Android OpenGLES2.0(九)——利用OpenGL进行图片处理
在之前的博客中我们就有提过OpenGLES的常见应用范围,其中有一个就是图片的处理。为了保证效率,Android手机中许多美颜相机、图片处理应用,都用到了OpenGLES来处理图片。上一篇博客中,我们利用OpenGLES 显示出了一张图片,并保证图片正常显示,不会被拉伸和压缩。在本篇博客中,我们来了解下利用OpenGLES来处理图片的一些简单方法。相关原理本篇博客以简单的图片色彩处理、模糊和...转载 2018-12-03 23:21:29 · 703 阅读 · 0 评论 -
Android OpenGLES2.0(八)——纹理贴图之显示图片
前面几篇博客,我们将了Android中利用OpenGL ES 2.0绘制各种形体,并在上一篇博客中专门讲了GLSL语言。但是我们看到的基于OpenGL开发的应用和游戏,可不仅仅是那些规则形体和一些简单的色彩构成,而是各种不规则的形体构成了现实世界或者卡通世界的人和事物,他们都是外面穿着漂亮“衣服”的。本篇博客就是来讲解这些“衣服”的基础的。这些衣服就是纹理贴图。什么是纹理贴图一般说来,纹理是...转载 2018-12-03 21:53:53 · 1001 阅读 · 0 评论 -
Android OpenGLES2.0(七)——着色器语言GLSL
在前面的博客中,我们都使用到了片元着色器和顶点着色器,相信我们对着色器语言有了一点了解。前面我们所使用的着色器,代码非常简单,能做的事情非常有限,而在后面的博客中我们将会用到的着色器的越来越复杂,所以在这里单独写一篇博客来介绍我们使用到的着色器语言GLSL。关于着色器着色器是用来实现图像渲染的,用来替代固定渲染管线的可编程程序。着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计...转载 2018-12-03 18:21:24 · 368 阅读 · 0 评论 -
Android OpenGLES2.0(六)——构建圆锥、圆柱和球体
之前的博客中,我们绘制了三角形、正方形、圆形、立方体,今天我们将绘制圆锥、圆柱和球体。能够绘制这些基本的常规几何形体后,其他的常见几何形体的绘制对于我们来说就基本没问题了。绘制圆锥由之前的博客,我们大家也应该都知道了,OpenGL ES2.0中物体的绘制重点就是在于把这个物体表面分解成三角形,分解成功后,绘制自然就不成问题了。圆锥我们很容易就能想到把它拆解成一个圆形和一个锥面,锥面的顶点与圆...转载 2018-12-03 17:55:18 · 359 阅读 · 0 评论 -
Android OpenGLES2.0(五)——绘制立方体
上篇博客中我们提到了OpenGLES中绘制的两种方法,顶点法和索引法。之前我们所使用的都是顶点法,这次绘制立方体使用索引法来绘制立方体。构建立方体上篇博客讲到正方形的绘制,立方体是是由六个正方形组成,我们将这六个正方形绘制出来,立方体就绘制完毕了。既然选择用索引法来绘制,立方体拥有八个顶点,我们先将这八个顶点列出来,放到一个数组中:final float cubePositions[] ...转载 2018-12-03 16:27:32 · 318 阅读 · 0 评论 -
Android OpenGLES2.0(四)——正方形和圆形
上篇博客中我们已经使用到了相机和投影,利用变换矩阵,绘制出了等腰直角三角形。在本篇博客中,我们绘制正方形和圆形同样少不了变换矩阵。构建正方形和圆形前面提到过,在OpenGLES的世界里面是没有正方形和圆形的,只有点、线、三角形。三角形就是OpenGLES提供的最复杂的图元单位。所以我们要绘制填充的正方形和圆形就需要利用三角形来实现。正方形正方形的构建比较简单,可以用两个三角形组成。当然...转载 2018-12-03 14:22:32 · 449 阅读 · 1 评论 -
Android OpenGLES2.0(三)——等腰直角三角形和彩色的三角形
上一篇博客中我们已经绘制出了一个直角三角形,虽然我们相对于坐标,我们设置的直角三角形的两腰是相等的,但是实际上展示出来的却并不是这样,虽然通过计算,我们可以把三角形的两腰计算一下比例,使它们在坐标上不等,但是现实出来相等,但是当绘制的图形比较复杂的话,这个工作量对我们来说实在太庞大了。那么我们怎么做呢?答案是,使用变换矩阵,把计算交给OpenGL。矩阵在数学中,矩阵(Matrix)是一个按照...转载 2018-12-03 14:06:54 · 219 阅读 · 0 评论 -
Android OpenGLES2.0(二)——绘制一个三角形
选择绘制三角形作为OpenGL ES 2.0的第一个实例,是因为前文中提到的,点、线、三角形是OpenGL ES世界的图形基础。无论多么复杂的几何物体,在OpenGL ES的世界里都可以用三角形拼成。关于Android OpenGL ES 三角形的绘制,在Android官方文档中有详细的说明和步骤,本文实例也是依照官方文档步骤绘制的三角形。步骤依照官方文档中的说明,Android中利用Ope...转载 2018-12-03 13:48:36 · 244 阅读 · 0 评论 -
Android OpenGLES2.0(一)——了解OpenGLES2.0
什么是OpenGL ES?OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。OpenGL在不同的平台上有不同的实现,但是它定义好了专业的程序接口,不同的平台都是遵照该接口来进行实现的,思想完全相同,方法名也是一致的,所以使用时也基本一致,只需要根...转载 2018-12-03 12:04:10 · 246 阅读 · 0 评论 -
OpenglES2.0 for Android:来画个立方体吧
前言:前面一直在说OpenglES2.0二维图形的绘制,接下来我们步入三维的世界 ,三维世界远比二维要有趣的多,与此同时复杂性也要高得多,在unity3D中我们可以很容易的就创建一个立方体,而在OpenglES2.0中这个过程要复杂得多,但是更加有趣 。先来看下我们的整个流程: 摄像机的设置:想想你的摄像头,它的位置不同,朝向不同,对同一个事物拍摄得到的画面肯定是不同的,...原创 2018-12-03 10:34:32 · 355 阅读 · 0 评论 -
Android OpenGL ES 简明开发教程五:添加颜色
前面的例子显示的正方形都是白色,看其来不是很吸引人,本篇介绍如何给Mesh(网格)添加颜色。OpenGL ES使用颜色是我们熟知的RGBA模式(红,绿,蓝,透明度)。颜色的定义通常使用Hex格式0xFF00FF 或十进制格式(255,0,255), 在OpenGL 中却是使用0…1之间的浮点数表示。 0为0,1相当于255(0xFF)。最简单的上色方法叫做顶点着色(Vertxt color...原创 2018-11-28 09:29:52 · 203 阅读 · 1 评论 -
一步一步学android OpenGL ES2.0编程(4)
应用投影和相机视口在OpenGLES环境中,投影和相机视口使你绘制的对象以更接近物理对象的样子显示。这是通过对坐标精确的数学变换实现的。 投影-这种变换跟据所在GLSurfaceView的宽和高调整对象的坐标。如果没有此变换,对象会被不规则的视口扭曲。投射变换一般只需要在OpenGLview创建或发生变化时调用,代码写在renderer的onSurfaceChanged()方法中。 ...原创 2018-11-30 19:35:09 · 134 阅读 · 0 评论 -
Android OpenGL ES 开发教程(17):投影变换Projection
前面ModelView变换相当于拍照时放置相机和调整被拍物体的位置和角度。投影变换则对应于调整相机镜头远近来取景。下面代码设置当前Matrix模式为Projection投影矩阵:1 gl.glMatrixMode(GL_PROJECTION); 2 gl.glLoadIdentity(); 后续的坐标变换则针对投影矩阵。投影变换的目的是定义视锥(viewing volu...原创 2018-11-29 12:26:44 · 225 阅读 · 1 评论 -
Android OpenGL ES 开发教程(16):Viewing和Modeling(MODELVIEW) 变换
Viewing和Modeling 变换关系紧密,对应到相机拍照为放置三角架和调整被拍物体位置及角度,通常将这两个变换使用一个modelview 变换矩阵来定义。对于同一个坐标变换,可以使用不同的方法来想象这个变换,比如将相机向某个方向平移一段距离,效果等同于将被拍摄的模型(model)向相反的方向平移同样的距离(相对运动)。两个不同的空间想象方法对于理解坐标变换各有其优缺点。你可以使用适合自己理解...原创 2018-11-29 12:17:01 · 163 阅读 · 0 评论 -
Android OpenGL ES 开发教程(15):通用的矩阵变换指令
Android OpenGL ES 对于不同坐标系下坐标变换,大都使用矩阵运算的方法来定义和实现的。这里介绍对应指定的坐标系(比如viewmodel, projection或是viewport) Android OpenGL ES支持的一些矩阵运算及操作。OpenGL ES 中使用四个分量(x,y,z,w)来定义空间一个点,使用4个分量来描述3D坐标称为齐次坐标 :所谓齐次坐标就是将一个原本是...原创 2018-11-29 11:59:24 · 503 阅读 · 0 评论 -
Android OpenGL ES 开发教程(14):三维坐标系及坐标变换初步
OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形。但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三维坐标。也就是使用3D建模,而有OpenGL ES库来完成从3D模型到二维屏幕上的显示。这个过程可以分成三个部分:坐标变换,坐标变换通过使用变换矩阵来描述,因此学习3D绘图需要了解一些空间几何...原创 2018-11-29 11:48:51 · 279 阅读 · 1 评论 -
Android OpenGL ES 开发教程(13):阶段小结
之前介绍了什么是 OpenGL ES ,OpenGL ES 管道的概念,什么是EGL,Android中OpenGL ES的开发包以及GLSurfaceView,OpenGL ES所支持的基本几何图形:点,线,面,已及如何使用这些基本几何通过构成较复杂的图像(20面体)。Android OpenGL ES 开发教程(1):导言 Android OpenGL ES 开发教程(2):关于OpenG...原创 2018-11-29 11:35:56 · 104 阅读 · 0 评论 -
Android OpenGL ES 开发教程(12):绘制一个20面体
前面介绍了OpenGL ES所有能够绘制的基本图形,点,线段和三角形。其它所有复杂的2D或3D图形都是由这些基本图形构成。本例介绍如何使用三角形构造一个正20面体。一个正20面体,有12个顶点,20个面,30条边构成:创建一个DrawIcosahedron Activity, 定义20面体的12个顶点,和20个面如下:1 static final float X=.5257311...原创 2018-11-29 11:29:14 · 198 阅读 · 0 评论 -
Android OpenGL ES 开发教程(11):绘制三角形Triangle
三角形为OpenGL ES支持的面,同样创建一个DrawTriangle Activity,定义6个顶点使用三种不同模式来绘制三角形:1 float vertexArray[] = { 2 -0.8f, -0.4f * 1.732f, 0.0f, 3 0.0f, -0.4f * 1.732f, 0.0f, 4 -0.4f, 0.4f * 1.732f,...原创 2018-11-29 10:48:11 · 154 阅读 · 0 评论 -
Android OpenGL ES 开发教程(10):绘制线段Line Segment
创建一个DrawLine Activity,定义四个顶点:1 float vertexArray[] = { 2 -0.8f, -0.4f * 1.732f, 0.0f, 3 -0.4f, 0.4f * 1.732f, 0.0f, 4 0.0f, -0.4f * 1.732f, 0.0f, 5 0.4f, 0.4f * 1.732f, 0....原创 2018-11-29 10:38:55 · 306 阅读 · 0 评论 -
Android OpenGL ES 开发教程(9):绘制点Point
上一篇介绍了OpenGL ES能够绘制的几种基本几何图形:点,线,三角形。将分别介绍这几种基本几何图形的例子。为方便起见,暂时在同一平面上绘制这些几何图形,在后面介绍完OpenGL ES的坐标系统和坐标变换后,再介绍真正的3D图形绘制方法。在Android OpenGL ES 开发教程(7):创建实例应用OpenGLDemos程序框架 创建了示例应用的程序框架,并提供了一个“Hello Wor...原创 2018-11-29 09:34:02 · 225 阅读 · 0 评论 -
Android OpenGL ES 开发教程(8):基本几何图形定义
在前面Android OpenGL ES 开发教程(7):创建实例应用OpenGLDemos程序框架 我们创建了示例程序的基本框架,并提供了一个“Hello World”示例,将屏幕显示为红色。本例介绍OpenGL ES 3D图形库支持的几种基本几何图形,本篇部分内容与Android OpenGL ES 简明开发教程三:3D绘图基本概念 类似。通常二维图形库可以绘制点,线,多边形,圆弧,路...原创 2018-11-29 09:33:19 · 138 阅读 · 0 评论 -
Android OpenGLES2.0(十一)——利用OpenGLES做Camera预览
OpenGLES在Android上除了可以用来做游戏、处理图片也可以用来处理视频图像、做相机预览美颜等等。本篇博客将介绍利用OpenGLES做相机预览的基本实现。预览方案前面我们有介绍过利用OpenGLES显示图片处理图片。视频每一帧其实也是一张图片,Camera预览时,每一帧自然也是一幅图片,我们可以把每张图片按照时间顺序显示出来,就完成了Camera预览的实现。 那么问题来了,在前面我...转载 2018-12-04 10:43:08 · 349 阅读 · 0 评论 -
Android OpenGLES2.0(十二)——FBO离屏渲染
之前的博客我们所做的示例都是直接渲染到屏幕上的,如果我们并不需要渲染到屏幕上,也就是离屏渲染,该怎么做呢?FBO离屏渲染是一个很好的选择。在这篇博客中,我们将以渲染摄像头数据为例,使用FBO进行离屏渲染。关于FBO离屏渲染所谓的FBO就是Frame Buffer Object。之前我们使用OpenGLES渲染,都是直接渲染到屏幕上,FBO可以让我们的渲染不渲染到屏幕上,而是渲染到离屏Buff...转载 2018-12-04 10:55:44 · 892 阅读 · 1 评论 -
一步一步学android OpenGL ES2.0编程(3)
绘制形状你定义了要绘制的形状后,你就要画它们了。使用OpenGLES 2.0会形状会有一点点复杂,因为API提供了大量的对渲染管线的控制能力。本文讲解如何绘制你在前文中定义的那些形状们。初始化形状在你做任何绘制之前,你必须初始化形状然后加载它。除非形状的结构(指原始的坐标们)在执行过程中发生改变,你都应该在你的Renderer的方法onSurfaceCreated()中进行内存和效...原创 2018-11-30 19:02:04 · 154 阅读 · 0 评论 -
一步一步学android OpenGL ES2.0编程(2)
定义形状 会定义在OpenGLES view上所绘制的形状,是你创建高端图形应用杰作的第一步。如果你不懂OpenGLES定义图形对象的一些基本知识,使用OpenGLES可能有一点棘手。本文解释OpenGLES相对于Android设备屏幕的坐标系统、定义一个形状的基础知识、形状的外观、以及如何定义三角形和正方形。定义一个三角形OpenGLEs允许你使用坐本在三个维度上定义绘制对象...原创 2018-11-30 18:34:02 · 174 阅读 · 0 评论 -
一步一步学android OpenGL ES2.0编程(1)
建立OpenGL ES环境 为了能在你的Android应用中使用OpenGLES绘画,你必须创建一个view作为容器。而最直接的方式就是从GLSurfaceView和GLSurfaceView.Renderer分别派生一个类。GLSurfaceView作为OpenGL绘制所在的容器,而实际的绘图动作都是在GLSurfaceView.Renderer里面发生的。使用GLSurfaceVi...原创 2018-11-30 18:25:04 · 232 阅读 · 0 评论 -
年轻人的第一篇OpenGL ES 2.0教程
Before we go在高性能graphics领域,特别是3D graphics领域,OpenGL无疑是目前的最佳选择,虽然,现在有很多集成度高的三方的库或者SDK,但是学习一下OpenGL仍然是非常有好处的,你可以了解基本的computer graphics的概念,这会让你在使用它们的时候更加的从容。OpenGL是一个跨平台的高性能3D渲染API,OpenGL ES是它的嵌入式平台版本...原创 2018-11-30 17:59:09 · 674 阅读 · 0 评论