OpenGL ES for Android
weiers
逝去了青春至少还留下了代码
展开
-
利用EGL在android上使用C/C++写OpenGL ES程序
使用Native代码GLSurfaceView在Java层使用EGL在native层使用EGL很多教程都是在C/C++写的OpenGL的代码,其中有很多优秀的框架,除了前面提过的Assimp库外,还有很强大的库glm,从另外一个角度来看,在学习EGL的时候,很多的资料都是C语言的代码,我在android上写OpenGL ES的代码似乎从来没见过那些代码,不使用一下总觉得缺少点什么。事实上,An原创 2016-11-30 23:37:30 · 15014 阅读 · 0 评论 -
OpenGL ES 着色器
OpenGL ES 着色器OpenGL ES 着色器着色器语言向量矩阵向量和矩阵的分量采样器数组类型转换变量限定符varying变量的原理获取着色器变量内建变量顶点着色器片元着色器函数片元着色器浮点变量精度着色器程序1.着色器语言着色器语言是一种高级图形编程语言,和C/C++语言很类似,但存在很大差别,比如,不支持double,byte,short,不支持unin,e原创 2016-10-22 21:36:31 · 2217 阅读 · 0 评论 -
OpenGL ES 正交投影
OpenGL ES 正交投影OpenGL ES 正交投影绘制正方形引入投影正交投影背后的数学摄像机设置视口绘制正方形在最开始绘制的六边形里面好像看起来挺容易的,也没有出现什么问题,接下来不妨忘记前面绘制六边形的代码,让我们按照自己的理解来绘制一个简单的正方形。按照我的理解,要想在屏幕中间显示一个正方形,效果如下图所示应该创建的数据如下图所示即传给渲染管线的顶点数据如下图:float[] v原创 2016-10-23 15:59:14 · 6260 阅读 · 1 评论 -
OpenGL ES 透视投影
图元装配剪裁坐标透视除法视口变换利用w分量产生三维效果透视投影透视投影背后的数学原理透视投影例子前面我们知道了一个顶点要想显示到屏幕上,它的x、y、z分量都要在[-1,1]之间,我们回顾一下渲染管线的图元装配阶段,它实际上做了以下几件事:剪裁坐标、透视分割、视口变换。图元装配的输入是顶点着色器的输出,抓哟是物体坐标gl_Position,之后到光栅化阶段。图元装配剪裁坐标当顶点着色器写原创 2016-10-23 21:09:03 · 3984 阅读 · 0 评论 -
OpenGL ES 矩阵变换及其数学原理
矩阵变换及其数学原理引子推荐这篇文章线性代数的本质,这篇文章挺不错的,揭示了矩阵和向量的内涵。首先概要性的提一下向量刻画的是线性空间中的对象。矩阵刻画的是向量在线性空间中的运动(变换,跃迁),相似矩阵本质上就是同一个线性变换的不同的描述。在一个线性空间中,选定了一组基,对于任何一个线性变化都可以用一个确定的矩阵来描述矩阵不仅可以作为线性变换的描述,而且可以作为一组基的描述,作为变换的矩阵,不原创 2016-10-24 10:41:35 · 3791 阅读 · 2 评论 -
OpenGL ES 光照效果
一个立方体光照模型环境光散射光镜面光为了演示光照效果,在前面学习过的内容基础上我们首先创建一个立方体,同时为了看起来直观一些,这个立方体每个面采用中心为白色,周围红色的渐变方案,不然看上去同样的颜色混在一起,看不出来是否是立方体。并且添加上转动旋转功能,这样转动起来立体感更强一些。一个立方体立方体类Rectangle.javapublic class Rectangle { priv原创 2016-10-24 22:54:53 · 3643 阅读 · 2 评论 -
OpenGL ES 纹理
纹理概念纹理对象和纹理加载应用纹理的例子使用前面学过的技术已经可以利用OpenGL ES构建立体图形,并通过顶点着色器和片元着色器对其进行各种变化呢和光照等效果使得三维效果更加真实,实际上我看看到很多的3D游戏漂亮多了,那是因为有各种各样的漂亮的图像带给人很多视觉盛宴,这篇文章在前面的基础上,增加物体的表面贴图,使得物体更加好看。纹理概念纹理用来表示图像照片或者说一系列的数据,使用纹理可以使物体原创 2016-10-27 16:44:45 · 2369 阅读 · 1 评论 -
OpenGL ES 纹理设置
纹理过滤纹理采样最近点采样线性纹理采样MIPMAP纹理纹理过滤纹理拉伸:重复拉伸和截取拉伸用于指定纹理坐标超过(00.0,1.0)范围时所发生的行为,使用glTexParameterf函数指定,GL_TEXTURE_WRAP_S 定义 s 坐标超出范围[0.0, 1.0]的情况,GL_TEXTURE_WRAP_T 设定 t 坐标。GL_REPEAT 重复纹理,超过1的部分其实只看它的小数原创 2016-10-31 15:10:19 · 2271 阅读 · 0 评论 -
OpenGL ES 片元操作
剪裁测试模板测试深度测试混合片元着色器后续操作还包括剪裁测试、模板测试、深度测试、混合等,最终才会被送到帧缓冲区。剪裁测试剪裁测试可以在渲染时用来限制绘制区域,通过制定一个矩阵进一步限制帧缓冲区可以写入的像素,启用剪裁测试后,绘制不会在整个屏幕(帧缓冲区)进行,而是在指定的矩形区域进行。不在矩形区域中的片元被丢弃,在矩形区域内的片元才能被送往帧缓冲区,实际效果就是在屏幕上开辟了一个小窗口。剪裁原创 2016-11-05 20:37:35 · 2546 阅读 · 0 评论 -
OpenGL ES 加载3D模型
前面绘制的矩形、立方体确实确实让人看烦了,并且实际生活中的物体是非常复杂的,我们不可能像前面哪样指定顶点来绘制,因此本篇博客就说明通过OpenGL ES加载一个3D模型。这样复杂物体的设计工作就可以交给专业的设计师来做了,进行3D建模的工具比如3dmax、maya等。设计师通过这些软件构建出来漂亮的3D模型,并且可以通过软件导出有关该模型的各种数据信息文件,比如顶点坐标,法向量,纹理坐标等信息。模型原创 2016-11-07 23:23:52 · 6850 阅读 · 0 评论 -
OpenGL ES 帧缓冲对象(FBO):Render to texture
帧缓冲对象FBO创建帧缓冲对象纹理附着渲染缓冲对象附着渲染到纹理Render to Texture渲染到深度纹理帧缓冲对象FBO渲染管线的最后一个阶段是到帧缓冲区。前面学习的好多知识所做的渲染操作都是在默认的帧缓冲中进行的,这个默认的帧缓冲是我们创建一个Surface时自动创建和配置好的,这篇博客就创建我们自己的缓冲区而不使用系统提供的缓冲区,这样就有了另一种渲染方式,默认情况下,我们使用原创 2016-11-15 00:26:48 · 12765 阅读 · 6 评论 -
OpenGL ES EGL介绍
前面已经在android平台上使用OpenGL ES的API了解了如何创建3D图形已经使用FBO渲染到纹理进行一些其他的操作,起初我学习OpenGL ES的目的就是为了研究Android平台上录制屏幕的方案。到目前为止,基础知识已经具备了,还差一点需要了解的是Embedded Graphics Library (EGL),EGL是连接OpenGL ES和本地窗口系统的接口,由于OpenGL ES是跨原创 2016-11-16 18:03:52 · 10538 阅读 · 1 评论 -
OpenGL ES入门
OpenGL ES渲染管线概述渲染管线一般是由显示芯片GPU内部处理图形信号的并行处理单元组成,这些并行处理单元之间是独立的,从另一个角度看,渲染管线实际上也是一系列绘制过程,这一系列过程的输入是待绘制物体的相关描述信息,输出的是要显示的图像帧数据。OpenGL ES管线主要包括:读取顶点数据—>顶点着色器—>组装图元—>光栅化图元—>片元着色器—>写入帧缓冲区—>显示到屏幕上读取顶点数据指的是将原创 2016-10-22 16:56:08 · 2605 阅读 · 2 评论