编写使用JOGL和Android的OpenGL便携式的Java应用程序(Writing a port

2019-08-31 22:37发布

我打算写一个Java 3D游戏,将工作无论在PC和Android。 不幸的是,它看起来像有两个平台没有共同的OpenGL API。

执行的API显著有什么不同? 有没有一种方法,我可以在这两个版本使用相同的3D代码? 这是个好主意吗?

Answer 1:

Android支持的OpenGL ES 1.0与1.3的OpenGL重叠所以这应该是可能的,但它并不像一个简单替换刚刚在运行时的jar文件。

这是一个好主意,尝试重用尽可能你在两个平台的应用。 反正它总体上是好的做法,你代码的其余部分从外部依赖这种隔离的OpenGL即使你没有特别需要支持OpenGL ES。 你永远不知道你可能你的应用程序想要的API /平台移植到在未来。

有2个选项可用。

首先是隐藏的接口应用程序使用的其余部分,然后提供单独JOGL和Androide实现背后的OpenGL实现。 那么根据你在你运行的平​​台可以选择使用工厂模式在运行时实例化正确的实行。

由于的OpenGL ES和OpenGL是非常相似的要求努力保持这应该不会太高,提供你坚持的常用功能。

另一种选择是尝试使用Jogl2这对于配置文件的支持。 这些似乎提供您所需要的东西,但Jogl2仍处于测试阶段。

底部此页谈论型材一点: http://kenai.com/projects/jogl/pages/FAQ

配置文件允许的方式,它允许在同一时间多个版本的OpenGL兼容性要写入的Java应用程序。 由于的OpenGL ES(GL嵌入式系统)已与OpenGL的本身功能重叠它打开了机会增加,甚至个人档案此桥桌面和嵌入式实现。

你可能想读这http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained有关配置文件的详细信息。



Answer 2:

该项目已完成。 原来,这些API有所不同,但在功能上有一个共享的一部分。 我们结束了写一个简单的预处理程序,转换JOGL代码ES版本,并自动与Eclipse的转换。



Answer 3:

实际上有相当多的Java3D和Android OPENGL API接口之间的差异。 首先Java3D的是3D更高的抽象层。 而且,即使你使用像JOGL会有在API的一些差异。 你最好的选择将是抽象出来的代码库实际3D绘图的实现,你可以分享逻辑的其余部分,但后来有特定于平台的代码来处理的OpenGL / 3D绘图。



Answer 4:

作为JOGL-ES是几年前合并成JOGL 2.x中,您既可以在桌面和移动环境(安卓)现在使用JOGL。



文章来源: Writing a portable Java application using JOGL and Android OpenGL