[图形学]OpenGL入门

OpenGL

介绍

这是什么?

一套标准的程序接口,用于绘制二维或三维图形。

我会怎么用它

我们可以那它来做游戏,三维建模,地图绘制等

OpenGL ES是什么?

OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。

WebGL是什么

OpenGL在浏览器上的实现,可以为HTML Canvas提供硬件加速渲染。

主要功能

让我们以绘制桌子为例,要让一个三维的桌子在屏幕上显示出来,需要几个步骤:建模、着色、上纹理、光照、变换。下面我们介绍一下这几个步骤

  1. 建模,这一步主要是用来描述桌子形状的,比如说高宽,圆的还是放的,几个角的。OpenGL提供了大量点线面操作的函数,我们可以按照需要把点线面组合起来,最后呈现出我们想要桌子形状
  2. 着色,规定了桌子的形状之后,一个很重要的店就是给桌子上色,主要是对面进行操作
  3. 贴纹理,我们经常看到一些物体的表面,有的光滑,有点粗糙,有的是木纹,有的时大理石纹,这些都是纹理的一部分,而这些我们都可以在OpenGL里面完成
  4. 光照,光线对我们最后看到的物体有着非常大的影响,现实中也存在也各种各样的光照以及变换的角度,OpenGL里提供了管理4种光(射光、环境光、镜面光和漫射光)的方法,此外还可以指定物体模型表面的反射特性。
  5. 变换,完成了上面的步骤,基本上已经确定了一个物体的外观了,能够通过计算得出我在某一个角度观看,物体所呈现出来的最终效果。而这个计算过程一般就是变换

完成了上面的步骤,一个物体最后呈现在屏幕上的效果已经确定了,当然,为了更好的效果,OpenGL还提供一些其他功能,比如说:

  1. 动画,这个很好理解,想象一下屏幕上能动的和不能动的桌子之间的区别。
    1. 扩展:双缓存技术(Double Buffer),动画是通过这个技术来实现,即在前台缓存中显示图像的同时,在后台缓存中绘制下一幅图像;当后台缓存绘制完成后,就显示出该图像,与此同时前台缓存开始绘制第三幅图像,如此循环往复,便可提高图像的输出速率。
  2. 位图处理,假设你不喜欢纹理,你就想把自家猫咪的照片贴在桌子上,这个时候就需要用到位图处理技术了。
    1. 扩展:位图和矢量图的区别。位图是通过描述每一个像素点的颜色来决定最后呈现的内容的,常见的各种jpg图片就是这种。矢量图是通过数学的方式,在画面中定义点,线,面及其关系来决定最后内容的,比较常见的就是CAD。

优缺点

优点

  1. 跨平台,支持在多个平台运行,具有很好的可移植性
  2. 接口对开发者友好,简单易学

缺点

  1. 接口对开发者过于友好,给硬件厂商带来比较大的压力,导致渲染层越来越厚,性能遭遇瓶颈
  2. OpenGL内部被设计为一个庞大的状态机,所以不支持多线程。在CPU走向多核的时候,不支持多线程成了比较糟糕的点。
  3. 封装了很厚的一层,屏蔽了大量硬件信息,容易出现不可以预知的Bug

我的思考

接口到底怎么设计才合适?

其他图形接口

微软的DirectX3d

微软很早就搞出来了,只支持自家的系统。

苹果的Metal

苹果2014年推出的一套接口,只支持自家的系统。

OpenGL继任者Vulkan

和OpenGL是一个组织提出的,特点是

  1. 只是对显卡驱动层进行了非常薄的封装,并向外暴露了大量的细节,这样做带来了几个有意思的结果
    1. 干的事情少了,问题也就容易暴露出来,被上层开发者所感知
    2. 上层要做的事情多了
    3. 对开发人员的要求变高了
  2. 合入OpenCL,对多线程的支持更好了

参考

  1. OpenGL具有什么功能?
  2. 可视化的OpenGL简史
  3. 图形程序接口知多少 | OpenGL、OpenCL、Vulkan、OpenGL ES、WebGL、Metal、Directx
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值