【发布时间】:2011-12-11 06:49:57
【问题描述】:
谁能给我一个关于 OpenGL 和 WebGL 之间确切区别的简单答案?我需要更具体的以下内容: 编程语义、API 的继承、API 的扩展等。
我查看了以下网站,但对我来说不是很清楚: http://www.khronos.org/webgl/wiki/WebGL_and_OpenGL_Differences
【问题讨论】:
-
"编程赛门铁克,api的继承,api的扩展"xD
谁能给我一个关于 OpenGL 和 WebGL 之间确切区别的简单答案?我需要更具体的以下内容: 编程语义、API 的继承、API 的扩展等。
我查看了以下网站,但对我来说不是很清楚: http://www.khronos.org/webgl/wiki/WebGL_and_OpenGL_Differences
【问题讨论】:
WebGL 是“OpenGL ES 2”,而不是普通的 OpenGL(ES 代表“嵌入式系统”)。所以有第一个区别。 OpenGL ES 本质上是 OpenGL 的一个子集。此外,WebGL几乎与 OpenGL ES 2 相同,但有一些细微差别,如您提供的链接中所述。该链接无需添加太多内容,它非常清楚地解释了 OpenGL ES 2 和 Webgl 之间的区别。
【讨论】:
OpenGL 是一个以桌面计算机为中心的 API(如 Direct3D)。 WebGL 源自 OpenGL ES 2.0(面向移动设备),功能较少,使用更简单。
WebGL 也被设计为在浏览器中运行,因此比 OpenGL ES 2.0 有一些限制。
与 OpenGL 不同,WebGL 不需要原生驱动程序支持。一个名为 ANGLE 的包装器,Safari、Chrome 和 Firefox 使用它可以将 WebGL 调用和 GLSL 转换为 OpenGL/GLSL 或 Direct3D/HLSL
请参阅 Khronos wiki 以获得详细答案:http://www.khronos.org/webgl/wiki/WebGL_and_OpenGL_Differences
【讨论】:
WebGL 旨在在浏览器(网络应用程序)中运行。
WebGL 是一个软件库,它扩展了 JavaScript 编程语言的功能,使其能够在任何兼容的网络浏览器中生成交互式 3D 图形。
...
它使用 HTML5 画布元素并使用文档对象模型接口进行访问。自动内存管理作为 JavaScript 语言的一部分提供。
OpenGL 通常用于桌面应用程序。它是一个跨语言、跨平台的规范,WebGL 或多或少是其中的一个子集。
【讨论】:
下面引用了联盟 (https://www.khronos.org/webgl/) 的定义。
WebGL 是一个跨平台、免版税的网络标准,用于基于 OpenGL ES 2.0 的低级 3D 图形 API,通过 HTML5 Canvas 元素作为文档对象模型接口公开。熟悉 OpenGL ES 2.0 的开发人员会将 WebGL 识别为使用 GLSL 的基于着色器的 API,其结构在语义上类似于底层 OpenGL ES 2.0 API。它非常接近 OpenGL ES 2.0 规范,但对开发人员对 JavaScript 等内存管理语言的期望做出了一些让步。
OpenGL 和 WebGL 具有相似的语义,但使用不同的语言进行编码。您将在基本层面上看到,大部分差异在于 C/C++ 与 JavaScript 的编程语言结构
WebGL and OpenGL 显示了两者之间的相似之处,C/C++ 中的 OpenGL 和 JavaScript 中的 WebGL。
【讨论】: