![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opengles
文章平均质量分 53
thermosHeng
这个作者很懒,什么都没留下…
展开
-
opengles(一) hello world
由于项目的要求,需要用到opengles,所以记录下学习心得,在这里先写个opengles 2.0 for android 的 hello world 吧。在android中需要使用GlSurfaceView来显示opengles,所以我们先继承GlSurfaceView来创建一个MyGlSurfaceView。public class MyGlSurfaceView extends GLSurfa原创 2017-05-17 23:21:25 · 475 阅读 · 0 评论 -
opengles(二)画个三角型
首先我们需要知道opengles在屏幕上的坐标,即中间坐标点是x=0,y=0; x轴往右是正,往左是负,y轴往上是正,往下是负,且x, y的范围都是-1到1;所以我们先定义坐标数组,顺序是逆时针方向:private static final float[] TRIANGLE_VERTEX_COORD = {0, 0.5f, -0.5f, -0.5f,原创 2017-05-21 16:24:15 · 373 阅读 · 0 评论 -
opengles(四)让图像动起来
之前画的三角型是无法与用户交互的,为了使交互过程变得更好玩,我们需要监听触摸事件,让图像跟随我们的触摸一起动起来。首先,我们需要重写触摸事件 onTouchEvent ,并且我们想在触摸发生变化时才进行渲染,所以设置渲染模式为 RENDERMODE_WHEN_DIRTY ,在 onTouchEvent 调用 requestRender 来渲染。private final float TOUCH_SC原创 2017-05-29 11:10:21 · 668 阅读 · 0 评论 -
opengles(五) 纹理映射
为了获取更加真实、酷炫的3d物体,就需要用到纹理映射,就相当在前面我们画的形状前再贴一张皮肤上去,下面来看下怎么实现。首先我们需要知道一张纹理图也是有自己的坐标, 二维纹理的坐标分为 S 轴和 T 轴,左上角坐标为(0, 0)点,最大为1个单位长度,所以长度的取值范围为 0 到 1,在这里说明下,不管纹理的长宽大小如何,它的取值范围都是从 0 到 1,所以假如纹理的高为255,宽为128,他们的取值原创 2017-06-08 10:53:00 · 445 阅读 · 0 评论 -
opengles的渲染管线
了解渲染管线的流程对我们学习opengles是有帮助的,下面一起来看看GPU到底是怎么渲染图像的吧; 为了提高渲染的效率,省去绘制每一帧图像时顶点数据的IO麻烦,我们可以把基本数据不变的顶点在初始化阶段将顶点数据经过基本处理后送入顶点缓冲对象。在顶点着色器是一个可编程的处理单元,功能为执行顶点的变换、光照、材质的应用与计算等顶点的相关操作。图元装配主要有两个任务:一个是图元组装,另一个是图元处理原创 2017-06-10 23:57:49 · 602 阅读 · 0 评论 -
opengles着色语言中的限定符
在顶点着色器和片元着色器中我们都要使用的着色器语言,我们先来看下常用的限定符:attribute :仅仅可以在顶点着色器中被访问。attribute 是在随着每一个顶点不同而会发生变动的输入值,例如顶点的位置和纹理坐标等。数据中有多少个顶点,管线就调用多少次顶点着色器,每次将顶点的各个属性数据传递给顶点着色器中对应的 attribute 变量;因此,顶点着色器每次执行将完成对一个顶点各项属性数据的处原创 2017-06-13 23:48:31 · 368 阅读 · 0 评论 -
opengles 纹理对象&纹理单元
在使用纹理的时候,有个疑问就是这些方法为什么就可以创建纹理并使用它们,这里来探讨下; 下面来看看一般使用二维纹理的步骤:// 生成纹理int[] textureHandle = new int[1];GLES20.glGenTextures(1, textureHandle, 0);int TextureID = textureHandle[0];GLES20.glBindTexture(G原创 2017-08-17 09:51:11 · 2107 阅读 · 0 评论 -
相机预览使用帧缓存对象(FBO)
在原先的相机应用中对相机预览处理是通过 OPENGL 直接读取 OES Texture 数据进行滤镜和显示,这样做的缺点是效率低, 由于 OES Texture 是外部纹理,直接读取的话会增加了GPU取数据的时间,若进行一些运算密集的算法例如高斯滤波,每次都会到外部纹理取数据,这样则会造成明显的卡顿; 解决办法是利用帧缓存把外部纹理渲染到关联的二维纹理,再对二维纹理进行处理,这样显示的效率才会高原创 2017-10-12 09:55:31 · 1461 阅读 · 2 评论