哪个版本的 OpenGL 最接近 OpenGL ES2?

Posted

技术标签:

【中文标题】哪个版本的 OpenGL 最接近 OpenGL ES2?【英文标题】:What version of OpenGL is closest to OpenGL ES2? 【发布时间】:2012-10-27 06:32:09 【问题描述】:

一段时间以来,我一直在尝试在 android 中使用 OpenGL ES 2,但我发现缺乏使用 OpenGL 本身的经验是一个问题,因为我几乎不了解所有 GLES20 方法实际上是什么做。我决定尝试学习真正的 OpenGL,但一点点阅读告诉我,每个版本的 OpenGL 都与其前身截然不同。 Wikipedia 并不清楚 OpenGL ES2 最接近哪个版本。

所以,我的问题是,为了更好地理解 OpenGL ES2,我应该学习哪个版本的 OpenGL?

【问题讨论】:

"一点阅读告诉我,OpenGL 的每个版本都与其前身截然不同。" 这根本不是真的。最接近事实的是 GL 3.1 的 the core/compatibility divide,但仅此而已。大多数 GL 版本都是对之前版本的增量更改。 OpenGL ES 2.0 递减到 GL 3.1。大部分 API 都消失了。 【参考方案1】:

OpenGL ES 2.0 最接近的是 OpenGL 2.0。 Khronos 提供了一个difference specification,它列举了删除了哪些桌面 OpenGL 功能以创建 OpenGL 2.0。 OpenGL ES 2.0 (GLSL ES 1.0) 的着色语言源自 GLSL 1.20。

【讨论】:

【参考方案2】:

OpenGL ES2.0 几乎是一对一的 WebGL 副本。

差异实际上仅在于环境的设置,在 Android 中发生在 EGL 中,在 WebGL 中发生在调用 DOM 方法时。 (设置画布)

与“open gl”的比较几乎是不可能的,因为 Open GL 意味着几乎固定和隐藏的渲染管道,它由矩阵和属性堆栈控制。现在在 ES 中已经过时了。相反,人们有“机会”来控制渲染管道的几乎所有方面。

【讨论】:

-1:WebGL 不是 OpenGL 的版本。因此它不可能是最接近 GL ES 2.0 的 OpenGL 版本。 能够编写自定义着色器(并真正理解它们的作用,而不是仅仅从教程中复制粘贴它们)对于 OpenGL ES2 仍然是必要的,如果我错了,请纠正我,但是我假设学习 OpenGL 会对此有所帮助。 否认学习某事无助于学习其他事物是毫无意义的。但在这种情况下,我不会通过任何版本的 open gl,而是了解矩阵/分层系统、法线、坐标系、颜色模型、将模型拆分为多边形以及了解着色模型。幸运的是,固定管道仍然执行顶点到扫描线的转换和裁剪。任何体面的计算机图形学书籍都会在一般层面上讨论这些,这比固定管道和堆栈模型更接近 ES2.0。【参考方案3】:

根据OpenGL ES 2.0 Programming Guide一书

OpenGL ES 1.0 和 1.1 规范实现了固定功能 管道,源自 OpenGL 1.3 和 1.5 规范, 分别。 OpenGL ES 2.0 规范实现了一个 可编程图形管线和源自OpenGL 2.0 规范

【讨论】:

以上是关于哪个版本的 OpenGL 最接近 OpenGL ES2?的主要内容,如果未能解决你的问题,请参考以下文章

如何最好地接近局部阈值opengl函数

如何检查带有 optirun 的 linux 系统上支持哪个版本的 OpenGL?

directx和opengl哪个好?

DirectX和OpenGL到底哪个好

系列三:OPENGL我来了

openGL - 我希望相机更接近物体,如何?