儿子:爸爸,你能帮我编程序吗?
爸爸:你不是学了python吗,不会自己编吗?
儿子:游戏,就像《我的世界》的那种?
爸爸:好吧,不过需要时间。
儿子:需要多长时间呀,我都跟同学说啦,我爸一定能编。
爸爸:啊!你这不是先斩后奏吗?
儿子:求求你啦,老爸!
爸爸:哎!老爸试试吧,不过需要学习、从头开始学,当然,我们可以一起学。
儿子:哈哈,我就知道老爸一定行......
爸爸:(又被套路啦)
1. OpenGL(ES)概述
- OpenGL(Open Graphics Library,开放图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形到比较复杂的三维景象。
- OpenGL ES 是 OpenGL 的子集,是针对手机和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的 API 接口。
OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。
实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。
作为独立于操作系统的开放的三维图形的软件开发包,在OpenGL基础上开发的应用程序能够简单方便的移植于各种平台。其具有七大功能:
1. 建立3D模型:OpenGL除了能够处理一般的2D图形,即点、线、面的绘制外,主要任务是集合了3D立体的物体绘制函数。
2. 图形变换:OpenGL利用基本变换以及投影变换处理图形。所谓的基本变换就是在处理2D平面图形时的平移、旋转、变比、镜像变换。投影变换就是在处理3D立体图形时的平行投影以及透视投影。通过变换方式,可以将2D的平面图形清晰明了的变换成3D的立体图形,从而在减少计算时间的同时就能够提高图形显示的速度。
3. 颜色模式:OpenGL库中使用较为广泛的颜色模式是RGBA模式以及颜色索引模式(color index)