当前课程知识点:移动图形概论 >  第二章 图形编程入门 >  2.1 OpenGL ES 基本概念 >  OpenGL ES 基本概念

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

OpenGL ES 基本概念在线视频

下一节:编写第一个图形程序

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

OpenGL ES 基本概念课程教案、知识点、字幕

各位同学大家好

今天主要给大家介绍OpenGL ES的基本概念

今天的主要内容包括OpenGL ES处理图像的基本流程

和OpenGL ES的软件架构

由于OpenGL ES是OpenGL的一个子集

大部分基础概念二者都是相通的

为了叙述方便

有时候我们会直接使用OpenGL这种说法

而不强调ES

好 下面我们就来看一下

OpenGL的坐标系统

由于OpenGL是一个3D的图形编程接口

我们在描述三维空间的时候

必然要用到X Y Z三个坐标轴

而如何定义这三个坐标轴的方向

就成为一个必须要明确的一个标准

在OpenGL里面用到的是右手坐标系

左图是OpenGL相关书籍里常用的一个指示图

我们可以用大拇指来表示X轴

食指来表示Y轴

中指代表Z轴

这样当我们把右手

按照三个手指展开的姿势摆在面前的时候

大拇指指向的就是X轴方向

食指指向的就是Y轴的方向

而中指指向自己就是Z轴的方向

其实在数学课中

我们经常用到的XY坐标是大家比较熟悉的

所以把坐标原点放在屏幕左下方

X轴指向右侧

Y轴指向上面

这种方式会比较熟悉

需要记忆的就是Z轴的方向

我们在物理课上的时候也学到过右手定则

这时我们也可以用右手

按照从X轴到Y轴的方向握紧拳头

竖起大拇指

那么大拇指指的方向就是Z轴的方向

OpenGL在内部使用的是归一化的坐标

也就是NDC坐标

所有的屏幕上显示的内容

都包含在一个边长为二的立方体内

也就是X Y Z的坐标都在[+1,-1]之间

只有在这个范围的内容才会显示在屏幕上

但是这个坐标范围在实际操作中并不是非常方便

因此实际编程中大多数

是通过各种变换获得最终的归一化设备坐标

在定义了所有图形元素的位置之后

显示硬件还要计算各种图形的颜色

并通过可选的深度测试

也就是计算出所有图形元素之间的遮蔽关系后

才把没有被遮挡的元素给绘制到屏幕上

OpenGL绘制图形的基本元素

主要有点、线、还有三角形

点和线是很好理解的概念

唯一需要注意的是要知道点是有一定大小的

在OpenGL里面可以设置它的尺寸

线也是有一定宽度的

也可以通过特定的API来进行设置

而三角形才是OpenGL里面应用最多的一个图形元素

我们经常可以听到某某显卡

可以在一秒钟绘制多少个三角形

作为它的一种性能指标的表现

这也体现了三角形是OpenGL里面最常见和基本的元素

很多复杂的模型实际上也都是由很多的三角形组成的

每个三角形有三个顶点

而这些顶点就直接确定了模型的主要形状

每个点的颜色和纹理就决定了模型的显示细节

右图中

第二个模型显得更加逼真

也只是因为它具有更多细分的三角形而已

着色器是我们在前面多次提到的一个概念

它的英文是Shader

他是OpenGL所使用的可编程模块

它所使用的编程语言叫GLSL

也就是OpenGL Shader Language

它主要用来对图像进行可编程的渲染

右图是OpenGL ES 3.2的图像处理管线

其中蓝色的部分是不可编程的

而橙色的部分是可以编程的部分

我们可以看到顶点数据来自应用程序

它首先经过的可编程模块是顶点着色器

它会对顶点的数据进行坐标变换

接着处理管线进入曲面细分着色器

曲面细分将图元进一步分割

获得更多的细节信息

曲面细分包括三个部分

其中控制着色器和评估着色器是可编程的

再接下来进入几何形状着色器

它可以把单个的顶点扩展成一个几何形状

简化模型的设计

后面经过一系列的变换

光栅化

早期片段测试后进入到片段着色器

在片段着色器里面

会对屏幕上显示的每个像素点

颜色进行计算

最后通过后续的片段操作和混合

将像素点显示在屏幕上

在这个管线中

只有顶点着色器和片段着色器是必须的

其他可编程着色器都可以不提供

这个图对我们将要重点介绍的

顶点着色器和片段着色器

进行了更加形象化的展示

顶点数据也就是三角形的顶点

在图元装配阶段

被组合成三角形

然后在光栅化的过程中

就确定为独立的显示在屏幕上的点

而片段着色器里

将对每个点的颜色进行计算

最后的测试和混合

包括遮挡的测试和其他的一些可编程测试

决定了最终在显示屏上显示的效果

这个图从编程接口的角度

对OpenGL ES 3.0的图形管线进行了描述

绘图程序中所使用的顶点缓冲区数据

纹理数据

还有顶点着色器和片段着色器的程序代码

都可以通过OpenGL ES所提供的API来进行控制

将数据传递给GPU

而图形管线完成所生成的最终显示结果

也就是帧缓冲区的内容

也可以通过API进行访问

OpenGL ES是一个通用的图形API接口标准

但它并不提供与操作系统和硬件的直接接口

这些功能由EGL所提供

EGL提供的功能包括与设备的原生窗口系统通信

查询绘图表面的可用类型和配置创建绘图表面

与其他图形渲染API之间的同步

还有管理纹理贴图等资源

这些功能虽然不是绘图操作

但都与最终图形在显示设备上的展示密切相关

和操作系统也有密切的关系

一般这个功能都会由第三方程序库来提供

PowerVR所提供的SDK框架也包含了这方面的支持

使用PowerVR的框架可以轻松地实现

跨平台代码的开发

和OpenGL ES环境的仿真

通过向各平台提供

特定于平台的PVRVFrame软件

可以实现真正的跨平台

PVRVFrame是一个OpenGL ES仿真器

支持在PC上开发OpenGL ES代码

而不用完全在嵌入式设备上来进行测试

在上节课中

我们就是利用PVRVFrame的库文件

才让我们的程序可以在Windows系统中运行

PowerVR的SDK中提供了丰富的编程接口

简化用户在编写绘图程序中所使用的代码

这里列出了其中包含的很多个模块

在后续的课程中

我们会逐渐的接触到它们

并对它们有更加深入的了解

SDK的在线文档也可以帮助用户了解

特定的API和SDK的功能

其中的示例代码也是学习SDK的重要资源

另外

还有PowerVR的专用开发者论坛可以参考

这里列出了它的网址

当你有问题的时候

可以先在论坛上搜索问题

如果找不到答案

也可以在论坛上提问

另外

这里再介绍两本很有价值的OpenGL ES相关参考书籍

也会对大家在学习和编程的过程中

提供很好的帮助

其中左边那本是对OpenGL的详细介绍

由于其英文版是红色封面

所以经常被称为OpenGL红宝书

右边那本是针对OpenGL ES的介绍书籍

可以作为本课程的教材使用

今天的课就到这里

谢谢大家

移动图形概论课程列表:

第一章 课程简介

-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 中的实用工具介绍

-综合测试

OpenGL ES 基本概念笔记与讨论

也许你还感兴趣的课程:

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