OpenGLES系列13-VBO&VAO
本系列所有文章目录 获取示例代码 本文将要介绍OpenGL ES的一个优化技巧,使用VBO和VAO减少CPU和GPU之间的数据传递,提高绘制速度。我们先来回顾一下之前绘制图形用到的代码。 // 启用Shader中的两个属性 // attribute vec4 position; // attribute vec4 color; GLuint positionAttribLocation = glGetAttribLocation(program, "position"); glEnableVertexAttribArray(positionAttribLocation); ...【详细】
ios 开发 3D OPenGL ES
2017年09月07日 赞:0 评论:0 阅读:383
OpenGLES系列14-顶点索引
本系列所有文章目录 获取示例代码 本文主要讲解OpenGL中另一个优化技巧,使用顶点索引渲染物体。上一篇文章的例子中渲染正方体需要一个包含36个顶点的数组。 本文修改的顶点数据都在Cube.m中。 - (GLfloat *)cubeData { static GLfloat cubeData[] = { // X轴0.5处的平面 0.5, -0.5, 0.5f, 1, 0, 0, 0, 0, // VertexA 0.5, -0.5f, -0.5f, 1, 0, 0, 0, 1, // VertexB 0.5, 0.5f, -0.5f, 1,...【详细】
ios 开发 3D OPenGL ES
2017年09月07日 赞:0 评论:0 阅读:326
OpenGLES系列12-激光特效
本系列所有文章目录 获取示例代码 本文主要介绍如何使用2个四边形实现一个简单的激光效果。下面是最终效果图。 在了解激光实现原理之前,先介绍一下我对上一篇文章的代码进行的简单重构。我把OpenGL关键性的代码都集成到了GLContext类中。 #import <GLKit> @interface GLContext : NSObject @property (assign, nonatomic) GLuint program; + (id)contextWithVertex...【详细】
ios 开发 3D OPenGL ES
2017年08月30日 赞:0 评论:0 阅读:703
OpenGLES系列11-透明和混合
本系列所有文章目录 获取示例代码 本文主要讲解OpenGL ES对于透明颜色的处理,在例子中我绘制了三个平面,分别赋予绿色半透明纹理,红色半透明纹理,和不透明纹理。 首先为这三张图生成纹理。 - (void)genTexture { NSString *opaqueTextureFile = [[NSBundle mainBundle] pathForResource:@"texture" ofType:@"jpg"]; NSString *redTransparencyTextureFile = [[NSBundle mainBundle] pathF...【详细】
ios 开发 3D OPenGL ES
2017年08月30日 赞:2 评论:0 阅读:465
OpenGLES系列10-基本纹理
获取示例代码 纹理通常来说就是一张图片,我们为每一个顶点指定纹理坐标,然后就可以在Shader中获取相应的纹理像素点颜色了。 纹理坐标 首先解释一下什么是纹理坐标。把一张图的左上角定为0,0点,长宽都定义为1,剩余四个点的坐标就会如下图所示。这样就构成了纹理坐标系统。 一般使用uv来表示纹理坐标,uv是一个二维向量(u,v),...【详细】
ios 开发 3D OPenGL ES
2017年08月24日 赞:1 评论:0 阅读:284
OpenGLES系列09-基本光照
获取示例代码 本文主要介绍如何使用Shader实现平行光的效果。什么是平行光呢?我们可以拿激光做比喻,平行光的方向不会随着离光源的距离而改变。所以我们在模拟平行光的时候仅仅需要使用一个光照方向即可。 我们有了光照方向,接下来还需要一个重要数据,平面的朝向。一个平面如果刚好面朝光线,那自然是最亮的。当然还有些材...【详细】
ios 开发 3D OPenGL ES
2017年08月24日 赞:1 评论:0 阅读:230
iOS特效之你家玻璃碎了
点击获取本文示例代码 前言 最近逛博客看到了一篇帖子,里面介绍了自己如何设计一套星球大战主题的UI,里面有一个界面破碎的特效,看着很炫酷,那篇文章的作者使用了UIDynamics,UIKit,OpenGL分别实现了效果。于是我就寻思如何使用Metal实现这样的效果。这是那篇博客的链接。下面是Metal版本的效果预览,目前还没有和界面集成,只是在...【详细】
ios 开发 3D OPenGL ES
2017年08月22日 赞:0 评论:0 阅读:202
OpenGLES系列08-绘制一个正方体
获取示例代码 经过前面7篇文章的铺垫,绘制正方体已经不是什么难事了。正方体其实就是由6个矩形组成的几何体,X,Y,Z轴上各两个矩形。下面是Z轴上两个矩形的示意图。 绘制Z轴两个矩形的代码如下。 - (void)drawZPlanes { static GLfloat triangleData[] = { -0.5, 0.5f, 0.5, 0, 0, 1, -0.5f, -0.5f, 0.5, 0, 0, 1, 0.5f, -0.5f, 0.5, 0, 0, 1, 0.5, -0.5f, 0.5, 0, 0, 1, 0.5f, 0.5f, 0...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:2 评论:0 阅读:216
OpenGLES系列07-摄像机
获取示例代码 上一篇文章中说到了透视和正交两种投影矩阵,文末提到了三个基本矩阵MVP。本文就以介绍MVP为开头,然后再详细讲解摄像机的概念。 MVP表示的是模型矩阵(Model),观察矩阵(View),投影矩阵(Projection)。投影矩阵介绍过了。模型矩阵针对的是单个3D模型,渲染每一个3D模型前,需要将各自的模型矩阵传递给Vertex Shader。观...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:1 评论:0 阅读:212
OpenGLES系列06-透视和正交投影
获取示例代码 上一篇介绍了变换矩阵,本篇将介绍两个重要的变换矩阵,透视投影矩阵和正交投影矩阵。在介绍代码之前,先来简单介绍一下这两个矩阵的作用。 透视投影矩阵 主要作用是模仿人眼观察3D世界的规律,让物体近大远小,所以被称为透视。 正交投影矩阵 主要作用是将坐标系映射到其他大小,主要用于2D UI绘制。 接下来我们...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:0 评论:0 阅读:181
OpenGLES系列05-变换矩阵
获取示例代码 在介绍本文的代码之前,先要了解一个概念:矩阵。学过线性代数的朋友应该都知道矩阵相当于是一个二维数组,有自己的运算规则。下面就通过几个例子简单了解一下矩阵的特性。 3X3矩阵的加法 从图中可以看出3X3矩阵就像是一个3X3的表格,每个单元格中填写一个数。它的加法就是把两个矩阵对应位置的元素加起来放在结...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:0 评论:0 阅读:161
OpenGLES系列04-绘制更多的图形
获取示例代码 前面几篇文章介绍了基本的OpenGL ES绘制流程和Shader的基本语法。本文主要扩展一下绘制方面的知识,会介绍到绘制三角带,三角扇形,直线,直线带,直线环,点。和三角形一样,它们的绘制都是通过调用glDrawArrays(几何形状类型, 0, 顶点数);完成的,Shader属性的激活和传值也是一模一样的,所以我把这些操作提取到一个新的...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:0 评论:0 阅读:175
OpenGLES系列03-什么是Shader
获取示例代码 上一篇文章中我们有说到OpenGL的渲染流程。 这其中Vertex Shader和Fragment Shader两步是可编程的。简而言之,Vertex Shader负责将顶点数据进一步处理,Fragment Shader将像素数据进一步处理。所以Vertex Shader中的代码针对每个点都会调用一次,Fragment Shader中的代码针对每个像素都会调用一次。接下来我就分三个部分讲解Shader的相关知识。...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:0 评论:0 阅读:218
OpenGLES系列02-绘制三角形
获取示例代码 - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect { ... // 使用fragment.glsl 和 vertex.glsl中的shader glUseProgram(self.shaderProgram); [self drawTriangle]; } - (void)drawTriangle { static GLfloat triangleData[18] = { 0, 0.5f, 0, 1, 0, 0, // x, y, z, r, g, b,每一行存储一个点的信息,位置和颜色 -0.5f, -0.5f, 0, 0, 1, 0, 0.5f, -0.5f, 0, 0, 0, 1, }; // 启用Shader中的两个属性 // attribute vec4 ...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:0 评论:0 阅读:273
OpenGLES系列01-第一个OpenGL ES项目
获取示例代码 最近一段时间在研究AR,为了熟悉3D渲染的相关知识,把OpenGL ES研究了一下。后续会写一些OpenGL ES系列的文章,内容上会由浅入深。 第一篇主要说一下如何在iOS里配置一个基本的OpenGL ES项目。 我写这篇文章的时候Xcode里面已经没有OpenGL ES的项目模板了,苹果只留下了SpriteKit,SceneKit,Metal的项目模板,估计是为了大力推广自家的...【详细】
ios 开发 3D OPenGL ES
2017年08月18日 赞:1 评论:0 阅读:438
共15个 共1页
sina weixin mail 回到顶部