OpenGL ES简述(1)

OpenGL ES简述(1)

简述

这个章节我们会来介绍一下OpenGL ES,学习OpenGL ES主要是为了了解GPU为我们提供了怎样的能力,Android系统中使用的是OpenGL ES,但是核心是一样的,了解OpenGL ES后我们可以对Android渲染有更深的理解。
Android上我们知道我们是通过Canvas来描述一个View需要渲染成什么效果的,其实Canvas的指令最终都是由Vulkan实现的,而现在新版本中的Android,Vulkan也会将渲染指令转化成OpenGL ES的指令,以便使用GPU渲染得到硬件加速。而对于3D的渲染则是直接使用OpenGL ES来实现的。

OpenGL 是什么,OpenGL ES和OpenGL的区别是什么?说简单一点其实OpenGL就是一个图形渲染库,它提供了一套渲染图形的接口,它可以用来控制GPU,使用GPU来根据我们的指令渲染图像,所以它的实现需要显卡厂商来实现,它则是一套通用标准,显卡厂商都会遵循它的标准提供这样的接口能力。
而OpenGL ES则是为移动设备定制的OpenGL,是OpenGL的一个子集,他们的核心其实差不多,只是api有一些不同。
还有一个缩写EGL,EGL其实是OpenGL ES的一套封装,他的目的是跨平台,也就是说,EGL提供的接口是一套平台无关的接口,可以在不同的操作系统上使用,比如Android和Linux。

涉及的概念

  • 顶点缓冲区
    顶点就是几何中的点,两个点可以确定一个线,三个点可以绘制一个三角形。顶点缓冲区就是用于存储顶点的,这个缓冲区指的是显存(显卡内存),我们买显卡的时候经常会会说显存16G之类的,GPU会使用自己的内存,即显存。而我们调用OpenGL的逻辑是在CPU上的,所以OpenGL提供了方法,创建顶点缓冲区就是在显卡上分配内存,我们会将顶点数据先放到顶点缓冲区,后续告诉GPU以一定的格式去读取顶点数据。
    顶点数据可以包含很多数据,位置,颜色,纹理等等,其实本质就是一段内存,想怎么用就看开发时候的需求,这个后面我们会详细讲。
  • 着色器(shader)
    着色器其实就是一段程序,只不过这段程序是给GPU执行的。
    我们主要去了解顶点着色器和片段着色器。
    在渲染的时候,每个像素都会执行一次顶点着色器和片段着色器,顶点着色器是用于计算位置信息的,而片段着色器是计算每个像素点需要渲染的颜色。
  • 统一变量
    统一变量用于CPU和GPU中的数据传递,顶点缓冲区的本质其实也是用于CPU和GPU的数据传递,区别就是统一变量每次渲染前设置后就是一个固定值,而顶点缓冲区每个顶点都可以设置一个值,这个描述可能有点难懂,后续我们在使用的时候会详细介绍。
  • 纹理
    纹理其实类似于Android里面的Bitmap,可以理解为图片,OpenGL如果需要渲染一张图片,则需要使用纹理来实现。
  • 相机/投影
    同样一个物体,我们在不同角度看,会不一样,我们的眼睛就好比一个相机,移动相机位置最终渲染的结果也会不同。另外OpenGL可以用来渲染3D图像,而我们最终呈现在屏幕上其实还是一个2D的图片,就需要一个透视的投影,2D的则是正交投影。其实这些都是通过一些线性代数的计算来获得结果的,通过将原来的坐标乘以一个特定的矩阵,进行一个映射得到结果。

涉及内容

我们将基于Android来举例学习OpenGL ES。
主要会介绍一下的内容:

  • 绘制一个三角形
  • EGL使用介绍
  • 顶点缓冲区的使用
  • 顶点着色器和片段着色器的使用
  • 索引缓冲区
  • 加载纹理
  • MVP(变换矩阵)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值