使用JOGL和Android OpenGL编写可移植Java应用程序

hmp*_*hmp 10 java opengl android opengl-es jogl

我计划编写一个可在PC和Android上运行的Java 3D游戏.不幸的是,看起来两个平台都没有通用的OpenGL API.

API有很大不同吗?有没有办法可以在两个版本中使用相同的3D代码?这是个好主意吗?

Aar*_*ron 11

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

尝试在两个平台上尽可能多地重用应用程序是个好主意.无论如何,即使您不特别需要OpenGL ES支持,通​​常也可以将其余代码与OpenGL等外部依赖项隔离开来.您永远不知道将来可能希望将应用程序移植到哪个API /平台.

有2个选项可供选择.

第一种是将OpenGL实现隐藏在应用程序其余部分使用的接口后面,然后提供单独的Jogl和Androide实现.根据您运行的平台,您可以选择使用工厂模式在运行时实现正确的实现.

由于OpenGL ES和OpenGL非常相似,因此只需坚持常用功能,维护它所需的工作量就不会太高.

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

本页底部讲述了一些关于配置文件的内容:http://kenai.com/projects/jogl/pages/FAQ

配置文件允许以允许同时兼容多个OpenGL版本的方式编写Java应用程序.由于OpenGL ES(用于嵌入式系统的GL)与OpenGL本身具有重叠功能,因此它开启了添加桥接桌面和嵌入式实现的Profiles的机会.

您可能需要阅读此http://michael-bien.com/mbien/entry/jogl_2_opengl_profiles_explained以获取有关配置文件的更多信息.