我可以在桌面上使用OpenGL GLES而不是完整的OpelGL吗?

时间:2017-11-17 04:42:05

标签: c linux opengl opengl-es

我想学习OpenGL来用C语言编写游戏,但我对哪个库选择有点困惑,目的是生成一个带有游戏逻辑的C库,并使用Android NDK与手机中的资源进行交互。

我找到了一个使用GLESv2库的例子,这很有效,我想我知道GLES库的创建是因为移动设备无法使用完整的OpenGL库。

但真正的问题是:GLES是完整的OpelGL库的子集,以便我可以在linux桌面上使用GLES库构建和运行我的游戏应用程序吗?

如果我使用这些图书馆正确的方式,你能给我一个线索吗?

2 个答案:

答案 0 :(得分:4)

  

GLES是完整的OpelGL库的子集,以便我可以构建和   在Linux桌面上使用GLES库运行我的游戏应用程序?

不,不是。 OpenGLES是一个单独的规范。

也就是说,它非常接近成为OpenGL的一个子集。共享OpenGL代码是一种非常明智的方法,可以编译成Linux和Android可执行文件。您必须小心只使用OpenGLES支持的功能,并且您可能会发现需要奇怪的#if来解释API中的细微差别,但95%以上的代码可以在两个API中运行。

另一种方法是在桌面上使用OpenGLES API。 gzh的答案意味着Linux附带GLES,这将使生活变得轻松。但如果它没有,你可以查看PowerVR's emulator (pvrvframe)Mali's emulator等工具。我唯一的经验是在Windows上使用pvrvframe,这对我们来说效果非常好 - 性能明显比非模拟代码路径差,但它仍然设法以可播放的帧速率运行要求苛刻的移动游戏。

答案 1 :(得分:2)

这取决于您链接到应用程序的OpenGL库。对于OpenGL,您应该与libGL.so链接,但对于OpenGLESv2,您应该与libGLESv2.so链接。

使用OpenGL:

 header file directory: /usr/include/GL
 library file: /usr/lib/libGL.so

使用OpenGLESv2:

 header file directory: /usr/include/GLES2
 library file: /usr/lib/libGLESvs.so

顺便说一句,根据Andriod Dashboards,目前,超过60%的Android设备已转换为使用OpenGLES v3.x.也许你最好尝试一下OpenGLES v3.x。