【AR\VR开发基础】认识 OpenGL ES

要想在Android上玩转AR/VR那OpenGL ES和C/C++是必不可少的!
所以这里建议大家学之前先去学习一下C/C++/JNI/NDK这些基础!
废话不多说直接上内容!!!!


我们去学习一个新的东西一般会问这么几个问题,所以在这里先来解决大家的疑问!!

一、OpenGL是什么?

1、】OpenGL是一种应用程序编程接口,它是一种可以对图形硬件设备特性进行访问的软件库。
2、】OpenGL被设计为一个现代化的、硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,或者完全通过软件的方式实现OpenGL接口。
3、】OpenGL自身并不包含任何执行窗口任务,或者处理用户输入的函数。
4、】OPenGL也没有提供任何用于表达三维物体模型,或者读取图像文件的操作。我们需要通过一系列的几何图元(点,线段三角形,以及patch)来创建三维空间物体!
5、】OpenGL API是过程性的,不是描述性的,即OpenGL不是面向对象的,所以OpenGL无法利用面向对象的特性。使用的时候只需要:程序与OpenGL的实现链接就可以了!
6、】OpenGL的实现可以是软件实现,也可以是硬件实现。
注意:
(1)OpenGL主要为我们定义了用来操作图形和图片的一系列函数的 API,需要注意的是 OpenGL 本身并非 API
(2)OpenGL API是过程性的,不是描述性的,即OpenGL不是面向对象的,所以OpenGL无法利用面向对象的特性,例如重载,继承等,但是我们可以使用面向对象的程序与OpenGL的实现进行链接
(3)OpenGL实现方式
这里写图片描述
软件实现:是对OpengGL函数调用时作出的响应并创建二维或三维图像的函数库。
硬件实现:则是通过设置能够绘制图形或图像的图形卡驱动程序
结论:硬件实现要比软件实现快得多!!

二、OpenGL可以来干什么?

OpenGL诞生时间 OpenGL已经诞生很长时间了,1.0版本是1992年7月发布,主要应用在 视频 图形 图片处理,2D/3D游戏引擎开发,科学可视化,医学软件的开发 ,CAD(计算机辅助技术),虚拟实境(AR VR)等应用领域

三、一个用来渲染图像的OpenGL程序需要执行的主要操作步骤?

一个用来渲染图像的OpenGL程序需要执行的主要操作步骤
1、】从OpenGL的几何图元中设置数据,用于构建形状
2、】使用不同的着色器对输入的图元数据执行计算操作,判断位置,颜色以及其他渲染属性
3、】将输入图元的数学描述 转换为与屏幕位置对应的像素片元,也称(光栅化)
4、】针对光栅化过程产生的每个片元,执行 片元着色器,从而决定这个片元的最终颜色和位置
5、】如果有必要 可以对片元执行一些额外操作,例如:判断片元对应的对象是否可见,或者将片元的颜色与当前屏幕位置的颜色进行融合。

四、OpenGL ES和OpenGL有什么关系?

1、】OpenGL ES是OpenGL的子集,针对手机、PDA和游戏主机嵌入式设备而设计
2、】OpenGL ES 是从 OpenGL 裁剪定制而来的,去除了 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性,剩下最核心有用的部分。可以理解成是一个在移动平台上能够支持 OpenGL 最基本功能的精简规范。
————————————–
在Android上 OpenGL ES 是使用客户端——服务端的形式实现的
(客户端):我们编写的程序
(服务端):计算机图形硬件厂商所提供的OpenGL ES实现
这里写图片描述

五、为什么要是使用OpenGL ES ?

这里写图片描述
1、】从一个内存区域复制到另一个内存区域的速度是相对较慢的,并且在内存复制的过程中,CPU 和 GPU 都不能处理这区域内存,避免引起错误。CPU / GPU 执行计算的速度是很快的,而内存的访问是相对较慢的,这也导致处理器的性能处于次优状态,这种状态叫做“数据饥饿”,简单来说就是空有一身本事却无用武之地。

2、】针对此,OpenGL 为了提升渲染的性能,为两个内存区域间的数据交换定义了缓存。缓存是指 GPU 能够控制和管理的连续 RAM(Random-Access Memory(随机存取存储器))。程序从 CPU 的内存复制数据到 OpenGL ES 的缓存。通过独占缓存,GPU 能够尽可能以有效的方式读写内存。 GPU 把它处理数据的能力异步地应用在缓存上,意味着 GPU 使用缓存中的数据工作的同时,运行在 CPU 中的程序可以继续执行。


如果有什么意见或建议可以留在评论区!

这节课只是课程前奏,让大家更好的认识OpenGL ES,后面还会不断更新,如果喜欢的话,可以点点关注哦!

技术交流也可以加我微信:

这里写图片描述


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值