有关于OpenGL、OpenGL ES、WebGL的小结

转自原文 有关于OpenGL、OpenGL ES、WebGL的小结

一.   OpenGL简介

  OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图西象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

  关于其他的介绍我就不说了。这边我说一下有OpenGL的资源网站:

  OpenGL官网:http://www.opengl.org/resources/libraries/glut/

  NeHe网站:http://nehe.gamedev.net/

  优良的OpenGL教程:http://www.zwqxin.com/archives/opengl/tutorial-recommendation.html

二.   OpenGL ES

1. OpenGL ES简介

可以这么说,OpenGL ES是OpenGL的嵌入式版本,OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。

OpenGL ES的版本差异,主要有两个版本,一个是OpenGL ES 1.X,一个是OpenGL ES 2.0版本,2.0的版本是不兼容1.x版本,因为一个是固定功能的管线(1.x),另外2.0是可编程功能管线,所以很多都不一样,来看看百科是怎么介绍的。OpenGL ES 是从 OpenGL 裁剪的定制而来的,去除了 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性。经过多年发展,现在主要有两个版本,OpenGL ES 1.x 针对固定管线硬件的,OpenGL ES 2.x 针对可编程管线硬件。OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 OpenGL 1.5 规范为基础的,它们分别又支持 common 和 common lite两种profile。lite profile只支持定点实数,而common profile既支持定点数又支持浮点数。 OpenGL ES 2.0 则是参照 OpenGL 2.0 规范定义的,common profile发布于2005-8,引入了对可编程管线的支持。

2. OpenGL ES 2.0概况:

支持的平台:

  - 支持iPad, iPhone3GS 和后续版本,以及iPodTouch3代和后续版本。

  - 支持Android平台从Android 2.2版本开始。

  - 支持android NDK从Android 2.0版本开始。

  - 支持BlackBerry PlayBook黑莓。

  - 支持Pandora潘多拉控制台的3D库。

  - 被WebGL支持:浏览器支持OpenGL

  - 支持少数新款Nokia诺基亚手机,比如N900上的Maemo和N8上的Symbian3塞班3系统。

  - 支持多款三星手机,包括Galaxy S和Wave

  - 使用开发插件可以支持Palm webOS。

  - 支持Archos 爱可视上网本:70 IT, 101 IT

opengl es与android有着密切的关系,主要体现在这两种接口的发展轨迹和研发公司。

目前有关于OpenGL ES 2.0的材料还是蛮少的,就只有一本书介绍(OpenGL ES 2.0 Programming Guide)是英文版,我有买了一本书,其实不会很难看懂。你要学习OpenGL ES 最好先把OpenGL 和 OpenGL Shading Language了解一下,毕竟这是基础的知识内容。

OpenGL ES 书的网站:http://www.opengles-book.com/downloads.html

三. WebGL

1. WebGL 简介

WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个javascript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。

WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。

2. WebGL 的例子

其实我有做了一个WebGL的例子,是用WebGL画了一个色立体,当然目前还很粗糙,简单的来说,它就是html5+OpenGL ES的组合,但是Html5还不成熟,所以关于WebGL的很多例子还只是在不成熟的DEMO上,但是我想这在以后还一种趋势,当然IT业谁也说不清楚,WebGL可以说是OpenGL的网页版,目前关于WebGL的书籍还是没有的,官网有一个是学习WebGL的教程,当然是英文了。。呵呵

目前IE还不支持WebGL,有FireFox还有谷歌浏览器等支持。。。

10大WebGL应用演示网站案例http://www.fadianzhan.com/index.php/archives/208

学习网站:http://learningwebgl.com/blog/

时间: 2024-10-18 18:27:29

有关于OpenGL、OpenGL ES、WebGL的小结的相关文章

[OpenGL]OpenGL库函数汇总

OpenGL函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等.从图可以看出,gl是核心,glu是对gl的部分封装.glx.agl.wgl 是针对不同窗口系统的函数.glut是为跨平台的OpenGL程序的工具包,比aux功能强大.扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数. 目前OpenGL的函数主要包含在3个库中:GL 函数库.GLU 函数库.GLUT 函数库 GL 库函数

[OpenGL]OpenGL坐标系及坐标转换

OpenGL通过相机模拟.可以实现计算机图形学中最基本的三维变换,即几何变换(模型变换-视图变换(两者合称几何变换)).投影变换.裁剪变换.视口变换等,同时,OpenGL还实现了矩阵堆栈等.理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界. 坐标系统 世界坐标系:在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标.为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一个坐标系.这个坐标系的长度单位

OpenGL第8,9讲小结

这两节,透明度和物体的3D运动,主要集中在第9讲,因为第9讲也用到了通过Alpha值来调整透明度的地方. 因为要模拟星星,所以要创建的四边形需要很多,例子中创建了50个正方形.因为每个星星的属性都差不多,所以选择了用结构体来循环创建.(感觉有点像面向对象的思路.)为了让星星在翻转的时候不至于由面变成一条线,通过自己数次的测试,我理解为X,Y,Z坐标轴始终是固定在所创建的对象上的,举个例子,想像一个正方形正对着自己,然后Z轴箭头向内,尾巴朝着自己,假如让此正方形向左(你自己的左边)转90度,那么坐

ES:学习小结2

1.数值扩展 1.从ES6之后,使用前缀0b代表二进制数,使用0o代表八进制数,转换成十进制用Number()函数,在非严格模式下,0o011===011返回为true,在严格模式下会报错. 2.新增的Number方法: 3.新增的Math方法: 4.左移运算符<< 和 右移运算符 >> 左移运算符<<: 在数字不溢出的情况下,左移n位相当于乘以2的n次方(当然首先要转换成二进制) 右移运算符>>: 与左移相反,高位的空位补符号位,正数补0,负数补1 无符号

基于OpenGL ES 的深度学习框架编写

基于OpenGL ES的深度学习框架编写 背景与工程定位 背景 项目组基于深度学习实现了视频风格化和人像抠图的功能,但这是在PC/服务端上跑的,现在需要移植到移动端,因此需要一个移动端的深度学习的计算框架. 同类型的库 caffe-android-lib 目前应该是最便于集成使用的深度学习框架库. tensorflow和mxnet据说也有对应的android库,因时间原因暂未测试. CNNdroid,网址https://zhuanlan.zhihu.com/p/25259452,这个是用 ren

[android] OpenGL与OpenGL ES简介

简介 OpenGL OpenGL的全称是Open Graphics Library,即开放的图形库接口,它定义了一个跨编程语言,跨平台的编程接口的规范,它主要用于3D图形(2D也可以)编程.OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL.IRIS RL是一个工业标准的3D图形软件接口,功能虽然强大,但是移植性不好,于是SGI公司在IRIS GL的基础上开发了OpenGL. OpenGL体系简单,而且具有跨平台特性,它不像Direct3D,是Microsoft开发的windows

OpenGL ES 系列之开篇

OpenGL ES 系列之开篇 很久前一直想研究 OpenGL 无奈自己的惰性,现在准备开始完整的学习下 OpenGL, 一来工作需要,二来也是自我学习的成长. 我是一名 iOSer,OpenGL 是与平台无关的一种开发技术,虽然苹果在 iOS 12 推荐使用自家的 Metal, 但这个做为学习还是有必要的. 关于 OpenGL OpenGL 全称:Open Graphics Library,用来处理2D.3D视觉数据的.是一个多用途的开放标准图形库,支持2D.3D数字内容的创建.机械和建筑设计

Chromium硬件加速渲染的OpenGL命令执行过程分析

在Chromium中,由于GPU进程的存在,WebGL端.Render端和Browser端的GPU命令是代理给GPU进程执行的.Chromium将它们要执行的GPU命令进行编码,然后写入到一个命令缓冲区中,最后传递给GPU进程.GPU进程从这个命令缓冲区读出GPU命令之后,就进行解码,然后调用对应的OpenGL函数.本文就详细分析WebGL端.Render端和Browser端执行GPU命令的过程. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在前面Ch

OpenGL与Direct3D

OpenGL(wiki  chs)/ OpenGL ES(wiki  chs)是跨平台的,OpenGL广泛用于PC平台(windows.Linux.Unix.Mac OS X),OpenGLES则用于移动端平台(Android.iOS),以C的方式提供API WebGL(wiki  chs)是跨平台3D图形Web标准,被各大web浏览器厂商广泛支持,使用JavaScript语言提供API,不使用插件的情况下在兼容的web浏览器的Canvas上呈现交互式3D图形 Direct3D(wiki  ch