当前课程知识点:移动图形概论 >  第五章 颜色与纹理 >  5.1 颜色的基本概念 >  颜色的基本概念

返回《移动图形概论》慕课在线视频课程列表

颜色的基本概念在线视频

下一节:纹理素材的使用

返回《移动图形概论》慕课在线视频列表

颜色的基本概念课程教案、知识点、字幕

同学们大家好

今天给大家介绍一下

opengles中颜色的相关知识

今天要介绍的主要内容

包括opengles中

颜色的基本表示方法

和在应用程序中

将坐标与颜色等数据

传递给

顶点着色器的编程方法

数字化的颜色

一般

都可以通过rgb3个分量

或者通道来表示

分别代表红色绿色和蓝色

另外还有一个颜色分量

叫做Alpha分量

用来表示色彩的透明度

透明度在多个颜色

进行混合的时候

将显示出透明的效果

在opengLES中

四个颜色分量

都取自0到1之间的浮点数

其中

前三个分量

分别代表一种色彩的强度

例如这个示例

全部的元素中

都是1的四维矢量

就代表了白色

而其中Alpha分量等于1

代表颜色不透明

在程序中

我们把顶点数据的内容进行修改

在每个顶点坐标数据后面

增加一个三维矢量的颜色值

每个颜色值都有不同的rgb分量

也就是这个三角形的

三个顶点

都被赋予了不同的颜色

在刚才的例子里

我们把顶点数据的坐标和颜色

交错保存在同一个一维数组里

而另外一种做法

采用两个单独的数组

分别来保存

顶点位置坐标

和颜色数据

但采用交错数据保存顶点数据的方法

有明显的优势

在程序中

顶点缓冲区对象

可以只建立一个

数据拷贝

也只需要进行一次

对于gpu而言

一个顶点有关的数据

都保存在临近的位置

访问起来效率会比较高

不过使用交错数据时

我们需要向GPU告知数据的结构

让着色器程序

可以正确处理的其中的数据

这里是建立顶点缓存对象的示例代码

这里与第一个程序唯一的不同是

拷贝数据的大小有了变化

由于每个顶点有六个浮点数据与之对应

因此

对于3个顶点

需要拷贝18个浮点数到缓冲区

为了让gpu

能正确的使用

交错数据的顶点缓冲对象

必须要让

gpu了解

该缓冲区对象的数据结构

其中

一个重要的概念

就是数据之间的步长

也就是

gpu在访问一个顶点的数据之后

需要将指针移动多少

才可以访问到下一个顶点数据

程序中

我们用stride这个变量

来记录这个步长

也就是

六个浮点数占用的空间

绘制三角形的代码

也与没有颜色数据的代码比较接近

这里我们可以看到

第一行代码

是激活顶点缓冲区对象vbo

第二行代码中

我们把着色器中的第一个属性激活

这里可以参考右上角的着色器代码

它有两个输入属性

分别是顶点坐标和颜色

索引号分别为0和1

在接下来看程序中

glVertexAttribPointer函数

告诉gpu刚刚激活属性的

所对应的数据存储结构

回顾这个函数的定义

第一个参数为0

是着色器属性的索引号

第二个参数为3

表示每个数据有3个分量

第三个参数指定数据类型为浮点数

第四个参数表示

并不需要进行标准化

第五个参数

就是我们前面计算的步长值

第六个参数

表示数据从数组的第一个元素开始

接下来

代码激活了着色器代码的第二个属性

这个属性就是顶点的颜色输入

继续用

glVertexAttribPointer函数

说明数据存储结构

与前面不同的是

第一个参数是索引号为1

最后一个参数

表示颜色数值

从数组的第四个浮点数开始

也就是告诉GPU

从第四个分量

开始的3个分量

是第一个颜色

4+6

从第10个分量开始

3个分量

是第二个颜色

10+6

从第16个分量开始的

3个分量是第三个颜色

程序的运行结果如这个图所示

同学们可能会奇怪

我们只定义了三个顶点的颜色

为什么这个三角形上面

显示的颜色这么多样呢

这就与片段着色器

在运行时的特性有关了

我们再来看一下着色器程序的代码

左边是顶点着色器

右边是片段着色器

虽然在顶点着色器中

传递给片段着色器的颜色

都是我们在程序中设置好的固定值

但片段着色气在光栅化之后

有一些片段

并不是我们定义的顶点

这时

这个片段所对应的颜色就通过

线性插值的方式

由已知的三个顶点来获取

不光是颜色

对于我们后面将会用到的纹理坐标

法向向量

都会通过这种方式

获得非顶点片段所对应的值

今天的课程内容就到这里

移动图形概论课程列表:

第一章 课程简介

-1.1 课程基本情况介绍

--课程基本情况介绍

-1.2 GPU 相关基础知识

--GPU 相关基础知识

-1.3 OpenGL ES 技术发展历史

--OpenGL ES 技术发展历史

-1.4 PowerVR SDK 安装和使用

--PowerVR SDK 安装和使用

-第一章测试

第二章 图形编程入门

-2.1 OpenGL ES 基本概念

--OpenGL ES 基本概念

-2.2 编写第一个图形程序

--编写第一个图形程序

-2.3 主要 API 介绍

--主要 API 介绍

-第二章测试

第三章 OpenGL ES 变换

-3.1 矢量和矩阵知识基础

--矢量和矩阵知识基础

-3.2 旋转与位移变换

--旋转与位移变换

-3.3 OpenGL ES 变换基础

--OpenGL ES 变换基础

-第三章测试

第四章 OpenGL ES 着色器

-4.1 着色器编程语言介绍

--着色器编程语言语法

--着色器编程语言特殊语法

-4.2 着色器编程实例

--着色器编程实例

-第四章测试

第五章 颜色与纹理

-5.1 颜色的基本概念

--颜色的基本概念

-5.2 纹理素材的使用

--纹理素材的使用

-5.3 立方体纹理

--立方体纹理

-第五章测试

第六章 光源与光照

-6.1 光照的基本概念

--光照的基本概念

-6.2 光源模型

--光源模型

-6.3 使用着色器渲染颜色

--使用着色器渲染颜色

-6.4 反射与折射

--反射与折射

-第六章测试

第七章 基于物理的渲染

-7.1 基于物理渲染的基本概念

--基于物理渲染的基本概念

-7.2 基于图像的照明

--基于图像的照明

-7.3 PBR 的实现

--PBR 的实现

-第七章测试

第八章 PowerVR 工具简介

-8.1 Vulkan 介绍

--Vulkan 介绍

-8.2 SDK 中的实用工具介绍

--SDK 中的实用工具介绍

-综合测试

颜色的基本概念笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。