文章 2022-09-18 来自:开发者社区

学习OpenGL ES之VBO&VAO

获取示例代码本文将要介绍OpenGL ES的一个优化技巧,使用VBO和VAO减少CPU和GPU之间的数据传递,提高绘制速度。我们先来回顾一下之前绘制图形用到的代码。// 启用Shader中的两个属性 // attribute vec4 position; // attribute vec4 color; GLuint positionAttribLocation = glGetAttribLoc....

文章 2022-09-18 来自:开发者社区

学习OpenGL ES之激光特效

获取示例代码本文主要介绍如何使用2个四边形实现一个简单的激光效果。下面是最终效果图。在了解激光实现原理之前,先介绍一下我对上一篇文章的代码进行的简单重构。我把OpenGL关键性的代码都集成到了GLContext类中。#import <GLKit/GLKit.h> @interface GLContext : NSObject @property (assign, nonatomic.....

学习OpenGL ES之激光特效
文章 2022-09-18 来自:开发者社区

学习OpenGL ES之透明和混合

获取示例代码本文主要讲解OpenGL ES对于透明颜色的处理,在例子中我绘制了三个平面,分别赋予绿色半透明纹理,红色半透明纹理,和不透明纹理。首先为这三张图生成纹理。- (void)genTexture { NSString *opaqueTextureFile = [[NSBundle mainBundle] pathForResource:@"texture" ofType:@"jp...

学习OpenGL ES之透明和混合
文章 2022-09-15 来自:开发者社区

学习OpenGL ES之基本纹理

获取示例代码纹理通常来说就是一张图片,我们为每一个顶点指定纹理坐标,然后就可以在Shader中获取相应的纹理像素点颜色了。纹理坐标首先解释一下什么是纹理坐标。把一张图的左上角定为0,0点,长宽都定义为1,剩余四个点的坐标就会如下图所示。这样就构成了纹理坐标系统。一般使用uv来表示纹理坐标,uv是一个二维向量(u,v),u和v的取值从0到1。我在代码中为每个顶点数据增加了2个GLFloat来表示u....

学习OpenGL ES之基本纹理
文章 2022-09-15 来自:开发者社区

学习OpenGL ES之基本光照

获取示例代码本文主要介绍如何使用Shader实现平行光的效果。什么是平行光呢?我们可以拿激光做比喻,平行光的方向不会随着离光源的距离而改变。所以我们在模拟平行光的时候仅仅需要使用一个光照方向即可。我们有了光照方向,接下来还需要一个重要数据,平面的朝向。一个平面如果刚好面朝光线,那自然是最亮的。当然还有些材质的平面可以反射光线,反射光线的强度和你观察的角度相关,不过这些本文都不会介绍。后面会有专门....

学习OpenGL ES之基本光照
文章 2022-09-08 来自:开发者社区

学习OpenGL ES之绘制一个正方体

获取示例代码经过前面7篇文章的铺垫,绘制正方体已经不是什么难事了。正方体其实就是由6个矩形组成的几何体,X,Y,Z轴上各两个矩形。下面是Z轴上两个矩形的示意图。绘制Z轴两个矩形的代码如下。- (void)drawZPlanes { static GLfloat triangleData[] = { -0.5, 0.5f, 0.5, 0, 0, 1, ...

学习OpenGL ES之绘制一个正方体
文章 2022-09-08 来自:开发者社区

学习OpenGL ES之摄像机

获取示例代码上一篇文章中说到了透视和正交两种投影矩阵,文末提到了三个基本矩阵MVP。本文就以介绍MVP为开头,然后再详细讲解摄像机的概念。MVP表示的是模型矩阵(Model),观察矩阵(View),投影矩阵(Projection)。投影矩阵介绍过了。模型矩阵针对的是单个3D模型,渲染每一个3D模型前,需要将各自的模型矩阵传递给Vertex Shader。观察矩阵针对的是场景中的所有物体,当观察矩....

学习OpenGL ES之摄像机
文章 2022-09-08 来自:开发者社区

学习OpenGL ES之透视和正交投影

获取示例代码上一篇介绍了变换矩阵,本篇将介绍两个重要的变换矩阵,透视投影矩阵和正交投影矩阵。在介绍代码之前,先来简单介绍一下这两个矩阵的作用。透视投影矩阵主要作用是模仿人眼观察3D世界的规律,让物体近大远小,所以被称为透视。正交投影矩阵主要作用是将坐标系映射到其他大小,主要用于2D UI绘制。接下来我们就结合代码和效果深入了解这两个矩阵。我沿用了上一篇的代码,只修改了两处。update中使用透视....

学习OpenGL ES之透视和正交投影
文章 2022-09-08 来自:开发者社区

学习OpenGL ES之绘制更多的图形

获取示例代码前面几篇文章介绍了基本的OpenGL ES绘制流程和Shader的基本语法。本文主要扩展一下绘制方面的知识,会介绍到绘制三角带,三角扇形,直线,直线带,直线环,点。和三角形一样,它们的绘制都是通过调用glDrawArrays(几何形状类型, 0, 顶点数);完成的,Shader属性的激活和传值也是一模一样的,所以我把这些操作提取到一个新的方法里面。- (void)bindAttrib....

学习OpenGL ES之绘制更多的图形
文章 2022-09-08 来自:开发者社区

学习OpenGL ES之什么是Shader?

获取示例代码上一篇文章中我们有说到OpenGL的渲染流程。这其中Vertex Shader和Fragment Shader两步是可编程的。简而言之,Vertex Shader负责将顶点数据进一步处理,Fragment Shader将像素数据进一步处理。所以Vertex Shader中的代码针对每个点都会调用一次,Fragment Shader中的代码针对每个像素都会调用一次。接下来我就分三个部分....

学习OpenGL ES之什么是Shader?

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。