将 OpenGL ES 2 移植到 OpenGL

Posted

技术标签:

【中文标题】将 OpenGL ES 2 移植到 OpenGL【英文标题】:Porting OpenGL ES 2 to OpenGL 【发布时间】:2012-04-10 04:29:49 【问题描述】:

我有一个要移植到 PC 的 iPhone 游戏。游戏使用 OpenGL ES 2(着色器),我将决定使用哪个版本的 OpenGL。

我应该将所有着色器移植到 OpenGL 2(并支持旧硬件)吗?或者我应该移植到 OpenGL 3(我还不太了解,但着色器似乎更兼容)?哪个更容易移植?

【问题讨论】:

【参考方案1】:

由于 OpenGL ES 2 是桌面 OpenGL 2 的子集,如果您不需要游戏在 PC 上使用更高级的技术(如实例化、纹理数组、几何着色器、. ..,你的 ES 设备从未听说过的事情)。

请记住,您可以在桌面 GL 2 中使用即时模式和固定功能管道这一事实并不意味着您应该这样做。您可以在 OpenGL 2.0 中编写完全向前兼容的现代 GL(VBO、着色器等)。另一方面,GL 3.x 与以前的版本并没有什么不同,它只是带来了一些额外的功能,如果需要,可以在以后包含这些功能。 GL 2 或 3 之间没有真正的决定,只有现代基于 VBO 着色器的 GL 和旧的基于即时模式固定功能的 GL 之间,并且您的游戏已经使用 GL ES 2.0,您已经做出了正确的决定。

实际上,您的着色器与 GL 2 比 3 更兼容,因为 ES 2 使用旧的属性/可变语法。但作为旁注,没有什么可以真正推动您的决定,因为您可能不得不稍微更改着色器(例如处理/删除精度限定符)。

【讨论】:

以上是关于将 OpenGL ES 2 移植到 OpenGL的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL vs OpenGL ES 2.0 - 可以轻松移植 OpenGL 应用程序吗?

在 OpenGL ES Android 中使用 glBufferSubData 和 glMultiDrawArrays

iOS OpenGL ES 与 Android OpenGL ES 兼容吗?

OpenGL ES着色语言-光照效果之散射光

OpenGL ES着色语言-光照效果之散射光

OpenGL ES着色语言-光照效果之散射光